summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--models.py8
-rw-r--r--templates/base_message.html3
-rw-r--r--templates/message.html41
-rw-r--r--urls.py4
-rw-r--r--views/pages.py33
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 %}
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<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))