summaryrefslogtreecommitdiffstats
path: root/hyperkitty/views/accounts.py
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2012-09-12 09:31:21 +0200
committerAurélien Bompard <aurelien@bompard.org>2012-09-12 09:31:21 +0200
commitbf62d083d818f074522f7fb095f93987afbb5bdc (patch)
tree87a26e868eec95f6d1a65a224f159731143a7b45 /hyperkitty/views/accounts.py
parent643a4a97ff7cd5013e25d2eeb6bcc68cf524c1d7 (diff)
downloadhyperkitty-bf62d083d818f074522f7fb095f93987afbb5bdc.tar.gz
hyperkitty-bf62d083d818f074522f7fb095f93987afbb5bdc.tar.xz
hyperkitty-bf62d083d818f074522f7fb095f93987afbb5bdc.zip
Improve the user voting display (only one SQL query)
Diffstat (limited to 'hyperkitty/views/accounts.py')
-rw-r--r--hyperkitty/views/accounts.py26
1 files changed, 24 insertions, 2 deletions
diff --git a/hyperkitty/views/accounts.py b/hyperkitty/views/accounts.py
index 2c68315..49d726f 100644
--- a/hyperkitty/views/accounts.py
+++ b/hyperkitty/views/accounts.py
@@ -29,7 +29,7 @@ from django.contrib.auth.decorators import (login_required,
permission_required,
user_passes_test)
from django.contrib.auth.forms import AuthenticationForm
-from hyperkitty.models import UserProfile
+from hyperkitty.models import UserProfile, Rating
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse
from django.http import HttpResponse, HttpResponseRedirect
@@ -41,6 +41,8 @@ from urlparse import urlparse
from forms import RegistrationForm
from hyperkitty.utils import log
+from hyperkitty.lib import get_store
+
def user_logout(request):
logout(request)
@@ -74,6 +76,7 @@ def user_login(request, template='login.html'):
def user_profile(request, user_email=None):
if not request.user.is_authenticated():
return redirect('user_login')
+ t = loader.get_template('user_profile.html')
# try to render the user profile.
try:
@@ -82,10 +85,29 @@ def user_profile(request, user_email=None):
except:
user_profile = UserProfile.objects.create(user=request.user)
- t = loader.get_template('user_profile.html')
+ try:
+ votes = Rating.objects.filter(user=request.user)
+ except Rating.DoesNotExist:
+ votes = {}
+ store = get_store(request)
+ votes_up = []
+ votes_down = []
+ for vote in votes:
+ message = store.get_message_by_id_from_list(
+ vote.list_address, vote.message_id)
+ vote_data = {"list_address": vote.list_address,
+ "message_id": vote.message_id,
+ "message": message,
+ }
+ if vote.vote == 1:
+ votes_up.append(vote_data)
+ elif vote.vote == -1:
+ votes_down.append(vote_data)
c = RequestContext(request, {
'user_profile' : user_profile,
+ 'votes_up': votes_up,
+ 'votes_down': votes_down,
})
return HttpResponse(t.render(c))