diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-02-07 11:29:04 +0100 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-02-07 11:29:04 +0100 |
commit | 76e48cc49fc7c73ba9642129059c2e51234c3fe6 (patch) | |
tree | 60a0aa47d588b0f2f77166ef0c3ce26cb35b5242 /hyperkitty/views | |
parent | be47fc55a268d80308cb9354c0b9f3c7e78b24b3 (diff) | |
download | hyperkitty-76e48cc49fc7c73ba9642129059c2e51234c3fe6.tar.gz hyperkitty-76e48cc49fc7c73ba9642129059c2e51234c3fe6.tar.xz hyperkitty-76e48cc49fc7c73ba9642129059c2e51234c3fe6.zip |
Fix votes (#34)
- make sure we always use the message_id_hash
- factor some code
Diffstat (limited to 'hyperkitty/views')
-rw-r--r-- | hyperkitty/views/list.py | 27 | ||||
-rw-r--r-- | hyperkitty/views/message.py | 23 | ||||
-rw-r--r-- | hyperkitty/views/thread.py | 24 |
3 files changed, 11 insertions, 63 deletions
diff --git a/hyperkitty/views/list.py b/hyperkitty/views/list.py index c86b506..3adbebd 100644 --- a/hyperkitty/views/list.py +++ b/hyperkitty/views/list.py @@ -40,8 +40,8 @@ from django.contrib.auth.decorators import (login_required, permission_required, user_passes_test) -from hyperkitty.models import Rating, Tag, Favorite -from hyperkitty.lib import get_months, get_store, get_display_dates +from hyperkitty.models import Tag, Favorite +from hyperkitty.lib import get_months, get_store, get_display_dates, get_votes from forms import * @@ -84,36 +84,21 @@ def archives(request, mlist_fqdn, year=None, month=None, day=None): totallikes = 0 totaldislikes = 0 - for message_id in thread.email_ids: + for message_id_hash in thread.email_id_hashes: # Extract all the votes for this message - try: - votes = Rating.objects.filter(messageid=message_id) - except Rating.DoesNotExist: - votes = {} - - likes = 0 - dislikes = 0 - - for vote in votes: - if vote.vote == 1: - likes = likes + 1 - elif vote.vote == -1: - dislikes = dislikes + 1 - else: - pass - + likes, dislikes = get_votes(message_id_hash) totallikes = totallikes + likes totalvotes = totalvotes + likes + dislikes totaldislikes = totaldislikes + dislikes try: thread.likes = totallikes / totalvotes - except: + except ZeroDivisionError: thread.likes = 0 try: thread.dislikes = totaldislikes / totalvotes - except: + except ZeroDivisionError: thread.dislikes = 0 thread.likestatus = "neutral" diff --git a/hyperkitty/views/message.py b/hyperkitty/views/message.py index 3e6cac3..40e1834 100644 --- a/hyperkitty/views/message.py +++ b/hyperkitty/views/message.py @@ -36,8 +36,7 @@ from django.contrib.auth.decorators import (login_required, permission_required, user_passes_test) -from hyperkitty.models import Rating -from hyperkitty.lib import get_store, get_months +from hyperkitty.lib import get_store, get_months, get_votes from forms import * @@ -57,25 +56,7 @@ def index(request, mlist_fqdn, message_id_hash): message.sender_email = message.sender_email.strip() # Extract all the votes for this message - try: - votes = Rating.objects.filter(messageid=message_id_hash) - except Rating.DoesNotExist: - votes = {} - - likes = 0 - dislikes = 0 - - for vote in votes: - if vote.vote == 1: - likes = likes + 1 - elif vote.vote == -1: - dislikes = dislikes + 1 - else: - pass - - message.votes = votes - message.likes = likes - message.dislikes = dislikes + message.likes, message.dislikes = get_votes(message_id_hash) message.likestatus = "neutral" if message.likes - message.dislikes >= 10: message.likestatus = "likealot" diff --git a/hyperkitty/views/thread.py b/hyperkitty/views/thread.py index 549dfe0..2e4f768 100644 --- a/hyperkitty/views/thread.py +++ b/hyperkitty/views/thread.py @@ -34,10 +34,10 @@ from django.contrib.auth.decorators import (login_required, permission_required, user_passes_test) -from hyperkitty.models import Rating, Tag, Favorite +from hyperkitty.models import Tag, Favorite #from hyperkitty.lib.mockup import * from forms import * -from hyperkitty.lib import get_months, get_store, stripped_subject +from hyperkitty.lib import get_months, get_store, stripped_subject, get_votes def thread_index(request, mlist_fqdn, threadid, month=None, year=None): @@ -60,25 +60,7 @@ def thread_index(request, mlist_fqdn, threadid, month=None, year=None): participants = {} for email in emails: # Extract all the votes for this message - try: - votes = Rating.objects.filter(messageid=email.message_id) - except Rating.DoesNotExist: - votes = {} - - likes = 0 - dislikes = 0 - - for vote in votes: - if vote.vote == 1: - likes = likes + 1 - elif vote.vote == -1: - dislikes = dislikes + 1 - else: - pass - - email.votes = votes - email.likes = likes - email.dislikes = dislikes + email.likes, email.dislikes = get_votes(email.message_id_hash) email.likestatus = "neutral" if email.likes - email.dislikes >= 10: email.likestatus = "likealot" |