save numberoflists in session table, fixes #687

This commit is contained in:
j 2012-03-20 19:38:18 +01:00
commit b55e1db153
4 changed files with 18 additions and 5 deletions

View file

@ -37,6 +37,8 @@ class SessionData(models.Model):
system = models.CharField(default='', max_length=255)
browser = models.CharField(default='', max_length=255)
numberoflists = models.IntegerField(default=0)
objects = managers.SessionDataManager()
groupssort = models.CharField(default=None,blank=True,null=True, max_length=255)
@ -101,6 +103,7 @@ class SessionData(models.Model):
self.level = self.user.get_profile().level
self.firstseen = self.user.date_joined
self.groupssort = ''.join([g.name for g in self.user.groups.all()])
self.numberoflists = self.user.lists.count()
else:
self.level = 0
self.groupssort = None
@ -163,7 +166,7 @@ class SessionData(models.Model):
j['level'] = p.get_level()
j['newsletter'] = p.newsletter
j['notes'] = p.notes
j['numberoflists'] = self.user.lists.count()
j['numberoflists'] = p.numberoflists
if keys:
for key in j.keys():
if key not in keys:
@ -294,7 +297,7 @@ def user_json(user, keys=None):
'level': p.get_level(),
'newsletter': p.newsletter,
'notes': p.notes,
'numberoflists': user.lists.count(),
'numberoflists': p.numberoflists,
'username': user.username,
}
if keys:

View file

@ -16,3 +16,12 @@ def parse_data(key):
session_data = models.SessionData.objects.get(session_key=key)
session_data.parse_data()
session_data.save()
@task(ignore_resulsts=True, queue='default')
def update_numberoflists(username):
user = models.User.objects.get(username=username)
models.SessionData.objects.filter(
user=user
).update(
numberoflists=user.lists.count()
)

View file

@ -442,11 +442,9 @@ def order_query(qs, sort):
'timesseen': 'timesseen',
'useragent': 'useragent',
'username': 'username',
'numberoflists': 'numberoflists',
'windowsize': 'windowsize',
}.get(e['key'], 'user__profile__%s'%e['key'])
if key == 'user__profile__numberoflists':
qs = qs.annotate(numberoflists=Sum('user__lists'))
key = 'numberoflists'
order = '%s%s' % (operator, key)
order_by.append(order)
if order_by: