summaryrefslogtreecommitdiffstats
path: root/hyperkitty/lib
diff options
context:
space:
mode:
authorAurélien Bompard <aurelien@bompard.org>2013-06-20 17:47:30 +0200
committerAurélien Bompard <aurelien@bompard.org>2013-06-20 17:47:30 +0200
commitdf0b5fb2fb74d1dec39bca6e60b04b49619caf81 (patch)
tree2af403b2f9db71f797c97a768833d696fe4ed3eb /hyperkitty/lib
parent0f5a2b253de5712423a999e860600c38fb7211db (diff)
downloadhyperkitty-df0b5fb2fb74d1dec39bca6e60b04b49619caf81.tar.gz
hyperkitty-df0b5fb2fb74d1dec39bca6e60b04b49619caf81.tar.xz
hyperkitty-df0b5fb2fb74d1dec39bca6e60b04b49619caf81.zip
Factor thread votes computation
Diffstat (limited to 'hyperkitty/lib')
-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"
+