From bf23059410ec7431ba83576a8cef6c3f8095b3e0 Mon Sep 17 00:00:00 2001 From: Aamir Khan Date: Mon, 18 Jun 2012 22:43:41 -0400 Subject: Rating of messages --- models.py | 8 ++++++++ templates/base_message.html | 3 +++ templates/message.html | 41 ++++++++++++++++++++++++++++++++++++++--- urls.py | 4 ++++ views/pages.py | 33 +++++++++++++++++++++++++++++++-- 5 files changed, 84 insertions(+), 5 deletions(-) create mode 100644 models.py 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 %} + + {% block additionaljs %} + {% endblock %} 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}} @@ -46,3 +46,38 @@ {% endblock %} + +{% block additionaljs %} + + + +{% endblock %} diff --git a/urls.py b/urls.py index 18af3f9..a506ce3 100644 --- a/urls.py +++ b/urls.py @@ -57,6 +57,10 @@ urlpatterns = patterns('', 'views.pages.add_category'), + # Vote a message + url(r'^vote/(?P.*@.*)/(?P.+)/$', + 'views.pages.vote_message'), + # Tag url(r'^tag/(?P.*@.*)\/(?P.*)\/(?P\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)) -- cgit