diff options
author | Aurélien Bompard <aurelien@bompard.org> | 2013-11-29 12:13:23 +0100 |
---|---|---|
committer | Aurélien Bompard <aurelien@bompard.org> | 2013-11-29 12:13:23 +0100 |
commit | 5bca903d1c75a59a3e415d14812b4ffca769d930 (patch) | |
tree | 289ecf0c5a6fa6d68be0d65399dee7e8d650260f /hyperkitty/lib/voting.py | |
parent | 7cbafa8b495c2a79339df6e68adb6023eb1d83eb (diff) | |
download | hyperkitty-5bca903d1c75a59a3e415d14812b4ffca769d930.tar.gz hyperkitty-5bca903d1c75a59a3e415d14812b4ffca769d930.tar.xz hyperkitty-5bca903d1c75a59a3e415d14812b4ffca769d930.zip |
Fix bug in voting when emails in different lists have the same msgid
Diffstat (limited to 'hyperkitty/lib/voting.py')
-rw-r--r-- | hyperkitty/lib/voting.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/hyperkitty/lib/voting.py b/hyperkitty/lib/voting.py index da3e2a4..dd01af2 100644 --- a/hyperkitty/lib/voting.py +++ b/hyperkitty/lib/voting.py @@ -24,14 +24,16 @@ from django.core.cache import cache from hyperkitty.models import Rating -def get_votes(msgid, user=None): +def get_votes(mlist_fqdn, msgid, user=None): """Extract all the votes for this message""" likes = dislikes = myvote = 0 try: if isinstance(msgid, basestring): - votes = Rating.objects.filter(messageid=msgid) + votes = Rating.objects.filter( + list_address=mlist_fqdn, messageid=msgid) elif isinstance(msgid, list): - votes = Rating.objects.filter(messageid__in=msgid) + votes = Rating.objects.filter( + list_address=mlist_fqdn, messageid__in=msgid) except Rating.DoesNotExist: votes = {} for vote in votes: @@ -49,7 +51,7 @@ def get_votes(msgid, user=None): def set_message_votes(message, user=None): # Extract all the votes for this message message.likes, message.dislikes, message.myvote = \ - get_votes(message.message_id_hash, user) + get_votes(message.list_name, message.message_id_hash, user) message.likestatus = "neutral" if message.likes - message.dislikes >= 10: message.likestatus = "likealot" @@ -65,7 +67,7 @@ def set_thread_votes(thread): likes, dislikes = cache.get(cache_key, (None, None)) if likes is None or dislikes is None: # XXX: 1 SQL request per thread, possible optimization here - likes, dislikes, _myvote = get_votes(thread.email_id_hashes) + likes, dislikes, _myvote = get_votes(thread.list_name, thread.email_id_hashes) cache.set(cache_key, (likes, dislikes)) # How should thread likes and dislikes be counted? #thread.likes = likes / thread.emails_count |