diff options
Diffstat (limited to 'hyperkitty')
-rw-r--r-- | hyperkitty/lib/__init__.py | 17 | ||||
-rw-r--r-- | hyperkitty/views/list.py | 27 | ||||
-rw-r--r-- | hyperkitty/views/message.py | 23 | ||||
-rw-r--r-- | hyperkitty/views/thread.py | 24 |
4 files changed, 28 insertions, 63 deletions
diff --git a/hyperkitty/lib/__init__.py b/hyperkitty/lib/__init__.py index 52b6bdc..b3fa6c4 100644 --- a/hyperkitty/lib/__init__.py +++ b/hyperkitty/lib/__init__.py @@ -25,6 +25,8 @@ import datetime from django.conf import settings +from hyperkitty.models import Rating + def gravatar_url(email): '''Return a gravatar url for an email address''' @@ -86,3 +88,18 @@ def get_display_dates(year, month, day): end_date = begin_date + datetime.timedelta(days=1) return begin_date, end_date + + +def get_votes(message_id_hash): + """Extract all the votes for this message""" + likes = dislikes = 0 + try: + votes = Rating.objects.filter(messageid=message_id_hash) + except Rating.DoesNotExist: + votes = {} + for vote in votes: + if vote.vote == 1: + likes += 1 + elif vote.vote == -1: + dislikes += 1 + return likes, dislikes 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" |