From 8cdddefaccf19e2380005b278b67fb22751330f3 Mon Sep 17 00:00:00 2001 From: Nikolai Kristiansen Date: Thu, 23 Feb 2012 04:21:50 +0100 Subject: [PATCH] Sorts users after last purchase --- main/models.py | 13 +++++++++++++ main/views.py | 12 ++++++++---- templates/register.html | 1 - 3 files changed, 21 insertions(+), 5 deletions(-) diff --git a/main/models.py b/main/models.py index df95b2e..35379a2 100755 --- a/main/models.py +++ b/main/models.py @@ -2,6 +2,7 @@ from django.contrib.auth.models import User from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver +from datetime import datetime class Product(models.Model): @@ -53,6 +54,18 @@ class UserProfile(models.Model): balance = models.FloatField(default=0.0) image = models.ImageField(upload_to='users', blank=True) + def last_purchase(self): + if len(self.user.order_set.all()) == 0: + return None + return self.user.order_set.order_by('created').reverse()[0] + + def last_purchase_date(self): + last = self.last_purchase() + if last: + return last.created + else: + return datetime.min + def __unicode__(self): return "{0}".format(self.user) diff --git a/main/views.py b/main/views.py index 1102785..22a2028 100755 --- a/main/views.py +++ b/main/views.py @@ -31,6 +31,8 @@ def home(request): def register(request): products = Product.objects.all() users = User.objects.filter(userprofile__balance__gt=0) + # sort users after user's last purchase time + users = sorted(users, key=lambda u: u.get_profile().last_purchase_date(), reverse=True) users_js = users_format_js(users) # multiple orderlines (one per product) @@ -80,7 +82,7 @@ def register(request): return render_to_response('register.html', locals(), context_instance=RequestContext(request)) def deposit(request): - users = User.objects.all() + users = User.objects.all().order_by('first_name','last_name') users_js = users_format_js(users) if request.method == "POST": @@ -109,7 +111,9 @@ def logout(request): return render_to_response('registration/logout.html', locals(), context_instance=RequestContext(request)) def users_format_js(users): - users = "[{0}]".format( - ",".join(['"'+user[0]+ ' ' + user[1][:1] + '"' for user in users.values_list('first_name','last_name')])) - return users + users_js = [] + for user in users: + users_js.append('"' + user.first_name + ' ' + user.last_name[:1] + '"') + users_js = "[{0}]".format(",".join(users_js)) + return users_js diff --git a/templates/register.html b/templates/register.html index 48074cc..32b45b1 100644 --- a/templates/register.html +++ b/templates/register.html @@ -40,7 +40,6 @@  
{% endif %} {{ user.first_name }} {{ user.last_name|slice:":1"}} ({{ user.get_profile.balance }}) -