Sorts users after last purchase

This commit is contained in:
nikolark committed 2012-02-23 04:21:50 +01:00
1 parent 85071ba6af
commit 8cdddefacc
3 files changed
+21 -5

No files matched your search

+13
View File
@@ -2,6 +2,7 @@ from django.contrib.auth.models import User
from django.db import models from django.db import models
from django.db.models.signals import post_save from django.db.models.signals import post_save
from django.dispatch import receiver from django.dispatch import receiver
from datetime import datetime
class Product(models.Model): class Product(models.Model):
@@ -53,6 +54,18 @@ class UserProfile(models.Model):
balance = models.FloatField(default=0.0) balance = models.FloatField(default=0.0)
image = models.ImageField(upload_to='users', blank=True) 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): def __unicode__(self):
return "{0}".format(self.user) return "{0}".format(self.user)
+8 -4
View File
@@ -31,6 +31,8 @@ def home(request):
def register(request): def register(request):
products = Product.objects.all() products = Product.objects.all()
users = User.objects.filter(userprofile__balance__gt=0) 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) users_js = users_format_js(users)
# multiple orderlines (one per product) # multiple orderlines (one per product)
@@ -80,7 +82,7 @@ def register(request):
return render_to_response('register.html', locals(), context_instance=RequestContext(request)) return render_to_response('register.html', locals(), context_instance=RequestContext(request))
def deposit(request): def deposit(request):
users = User.objects.all() users = User.objects.all().order_by('first_name','last_name')
users_js = users_format_js(users) users_js = users_format_js(users)
if request.method == "POST": if request.method == "POST":
@@ -109,7 +111,9 @@ def logout(request):
return render_to_response('registration/logout.html', locals(), context_instance=RequestContext(request)) return render_to_response('registration/logout.html', locals(), context_instance=RequestContext(request))
def users_format_js(users): def users_format_js(users):
users = "[{0}]".format( users_js = []
",".join(['"'+user[0]+ ' ' + user[1][:1] + '"' for user in users.values_list('first_name','last_name')])) for user in users:
return users users_js.append('"' + user.first_name + ' ' + user.last_name[:1] + '"')
users_js = "[{0}]".format(",".join(users_js))
return users_js
-1
View File
@@ -40,7 +40,6 @@
  <img class="profile" src="{% gravatar_for_user user %}" /><br />   <img class="profile" src="{% gravatar_for_user user %}" /><br />
{% endif %} {% endif %}
<span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span> ({{ user.get_profile.balance }}) <span class="name">{{ user.first_name }} {{ user.last_name|slice:":1"}}</span> ({{ user.get_profile.balance }})
<span class="username" style="display:none;">{{ user }}</span>
<span class="id" style="display:none;">{{ user.id }}</span> <span class="id" style="display:none;">{{ user.id }}</span>
</li> </li>
</li> </li>