summaryrefslogtreecommitdiffstats
path: root/hyperkitty/lib/voting.py
diff options
context:
space:
mode:
Diffstat (limited to 'hyperkitty/lib/voting.py')
-rw-r--r--hyperkitty/lib/voting.py27
1 files changed, 26 insertions, 1 deletions
diff --git a/hyperkitty/lib/voting.py b/hyperkitty/lib/voting.py
index 8624d75..d21d977 100644
--- a/hyperkitty/lib/voting.py
+++ b/hyperkitty/lib/voting.py
@@ -39,7 +39,9 @@ def get_votes(msgid, user=None):
elif vote.vote == -1:
dislikes += 1
if user is not None and user.is_authenticated() and vote.user == user:
- myvote = vote.vote
+ if not isinstance(msgid, list) or vote.messageid == msgid[0]:
+ # for a thread, only consider the starting email
+ myvote = vote.vote
return likes, dislikes, myvote
@@ -54,3 +56,26 @@ def set_message_votes(message, user=None):
message.likestatus = "like"
#elif message.likes - message.dislikes < 0:
# message.likestatus = "dislike"
+
+
+def set_thread_votes(thread, user=None):
+ total = 0
+ # XXX: 1 SQL request per thread, possible optimization here
+ likes, dislikes, myvote = get_votes(thread.email_id_hashes)
+ total = likes + dislikes
+ try:
+ thread.likes = likes / total
+ except ZeroDivisionError:
+ thread.likes = 0
+ try:
+ thread.dislikes = dislikes / total
+ except ZeroDivisionError:
+ thread.dislikes = 0
+ thread.likestatus = "neutral"
+ if thread.likes - thread.dislikes >= 10:
+ thread.likestatus = "likealot"
+ elif thread.likes - thread.dislikes > 0:
+ thread.likestatus = "like"
+ #elif thread.likes - thread.dislikes < 0:
+ # thread.likestatus = "dislike"
+