summaryrefslogtreecommitdiffstats
path: root/hyperkitty/views/message.py
diff options
context:
space:
mode:
Diffstat (limited to 'hyperkitty/views/message.py')
-rw-r--r--hyperkitty/views/message.py82
1 files changed, 82 insertions, 0 deletions
diff --git a/hyperkitty/views/message.py b/hyperkitty/views/message.py
new file mode 100644
index 0000000..0b70969
--- /dev/null
+++ b/hyperkitty/views/message.py
@@ -0,0 +1,82 @@
+import re
+import os
+import django.utils.simplejson as simplejson
+
+from django.http import HttpResponse, HttpResponseRedirect
+from django.template import RequestContext, loader
+from django.conf import settings
+from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger, InvalidPage
+from django.contrib.auth.decorators import (login_required,
+ permission_required,
+ user_passes_test)
+
+from kittystore.kittysastore import KittySAStore
+
+from gsoc.models import Rating
+from lib.mockup import *
+from forms import *
+from gsoc.utils import log
+
+STORE = KittySAStore(settings.KITTYSTORE_URL)
+
+
+def index (request, mlist_fqdn, messageid):
+ ''' Displays a single message identified by its messageid '''
+ list_name = mlist_fqdn.split('@')[0]
+
+ search_form = SearchForm(auto_id=False)
+ t = loader.get_template('message.html')
+ message = STORE.get_email(list_name, messageid)
+ message.email = message.email.strip()
+ # Extract all the votes for this message
+ try:
+ votes = Rating.objects.filter(messageid = messageid)
+ 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
+
+ c = RequestContext(request, {
+ 'list_name' : list_name,
+ 'list_address': mlist_fqdn,
+ 'message': message,
+ 'messageid' : messageid,
+ })
+ return HttpResponse(t.render(c))
+
+
+
+@login_required
+def vote (request, mlist_fqdn):
+ """ Add a rating to a given message identified by messageid. """
+ if not request.user.is_authenticated():
+ return redirect('user_login')
+
+ value = request.POST['vote']
+ messageid = request.POST['messageid']
+
+ # Checks if the user has already voted for a this message. If yes modify db entry else create a new one.
+ try:
+ v = Rating.objects.get(user = request.user, messageid = messageid, list_address = mlist_fqdn)
+ except Rating.DoesNotExist:
+ v = Rating(list_address=mlist_fqdn, messageid = messageid, vote = value)
+
+ v.user = request.user
+ v.vote = value
+ v.save()
+ response_dict = { }
+
+ return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript')