diff options
author | Aamir Khan <syst3m.w0rm@gmail.com> | 2012-06-18 22:43:41 -0400 |
---|---|---|
committer | Aamir Khan <syst3m.w0rm@gmail.com> | 2012-06-18 22:43:41 -0400 |
commit | bf23059410ec7431ba83576a8cef6c3f8095b3e0 (patch) | |
tree | ba8a4063c5e9aafbc331c7493808b276911b654c | |
parent | 80d628f1a9100c3d31d3c803690447698a4dbf1f (diff) | |
download | hyperkitty-bf23059410ec7431ba83576a8cef6c3f8095b3e0.tar.gz hyperkitty-bf23059410ec7431ba83576a8cef6c3f8095b3e0.tar.xz hyperkitty-bf23059410ec7431ba83576a8cef6c3f8095b3e0.zip |
Rating of messages
-rw-r--r-- | models.py | 8 | ||||
-rw-r--r-- | templates/base_message.html | 3 | ||||
-rw-r--r-- | templates/message.html | 41 | ||||
-rw-r--r-- | urls.py | 4 | ||||
-rw-r--r-- | views/pages.py | 33 |
5 files changed, 84 insertions, 5 deletions
diff --git a/models.py b/models.py new file mode 100644 index 0000000..f55513a --- /dev/null +++ b/models.py @@ -0,0 +1,8 @@ +from django.db import models +from django.contrib.auth.models import User + +class Rating(models.Model): + list_address = models.CharField(max_length=50) + messageid = models.CharField(max_length=30) + user = models.ForeignKey(User, unique=True) + vote = models.SmallIntegerField() diff --git a/templates/base_message.html b/templates/base_message.html index adc4e1f..663450e 100644 --- a/templates/base_message.html +++ b/templates/base_message.html @@ -72,6 +72,9 @@ {% block content %} {% endblock %} </div> + <script src="{{ STATIC_URL }}/js/libs/jquery-1.7.1.min.js"></script> + {% block additionaljs %} + {% endblock %} </body> </html> diff --git a/templates/message.html b/templates/message.html index 2d4d23f..12b9075 100644 --- a/templates/message.html +++ b/templates/message.html @@ -34,9 +34,9 @@ {{message.content}} </div> <ul class="email_info inline"> - <li class="neutral"> 0</li> - <li class="youlike"> <a href="#like"> Like</a></li> - <li class="youdislike"> <a href="#dislike"> Dislike</a></li> + <li class="neutral"> 0 </li> + <li id="voteup"><a href="#"> Like </a></li> + <li id="votedown"><a href="#"> Dislike</a></li> <li class="discussion add_comment"> <a href="#comment"> Add your own comment</a></li> </ul> </div> @@ -46,3 +46,38 @@ </div> <!-- end of content --> {% endblock %} + +{% block additionaljs %} + +<script type="text/javascript"> + +$(document).ready(function() { + $("#voteup").click(function(){ + $.ajax({ + type: "POST", + url: '/vote/{{list_address}}/{{message.message_id}}/', + data: { vote : 1, messageid : "{{message.message_id}}" , list: "{{list_address}}", csrfmiddlewaretoken: '{{ csrf_token }}' }, + success: function(response){ + alert(response); + } + }); + return false; + }); + + $("#votedown").click(function(){ + $.ajax({ + type: "POST", + url: '/vote/{{list_address}}/{{message.message_id}}/', + data: { vote : -1, messageid : "{{message.message_id}}" , list: "{{list_address}}", csrfmiddlewaretoken: '{{ csrf_token }}' }, + success: function(response){ + alert(response); + } + }); + return false; + }); + +}); + +</script> + +{% endblock %} @@ -57,6 +57,10 @@ urlpatterns = patterns('', 'views.pages.add_category'), + # Vote a message + url(r'^vote/(?P<mlist_fqdn>.*@.*)/(?P<messageid>.+)/$', + 'views.pages.vote_message'), + # Tag url(r'^tag/(?P<mlist_fqdn>.*@.*)\/(?P<tag>.*)\/(?P<page>\d+)/$', 'views.pages.search_tag'), diff --git a/views/pages.py b/views/pages.py index 2251c99..ebf4e5e 100644 --- a/views/pages.py +++ b/views/pages.py @@ -8,13 +8,18 @@ import os import re from urlparse import urljoin import urllib - +import django.utils.simplejson as simplejson from django import forms 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 #import urlgrabber +from gsoc.models import Rating + +from django.contrib.auth.decorators import (login_required, + permission_required, + user_passes_test) from bunch import Bunch @@ -79,7 +84,31 @@ def index(request): }) return HttpResponse(t.render(c)) +@login_required +def vote_message (request, mlist_fqdn, messageid): + """ Add a rating to a given message identified by messageid. """ + if not request.user.is_authenticated(): + return redirect('user_login') + + value = request.POST['vote'] + print value + # See if the user has already voted or not. + # If not create a new entry + 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') + +@login_required def add_tag(request, mlist_fqdn, email_id): """ Add a tag to a given message. """ t = loader.get_template('simple_form.html') @@ -289,12 +318,12 @@ def message (request, mlist_fqdn, messageid): t = loader.get_template('message.html') message = STORE.get_email(list_name, messageid) message.email = message.email.strip() - c = RequestContext(request, { 'app_name': settings.APP_NAME, 'list_name' : list_name, 'list_address': mlist_fqdn, 'message': message, + 'messageid' : messageid, }) return HttpResponse(t.render(c)) |