Commit 9c0fc2b40162ff2e2162cb0d6b56d0c07448c351

Authored by Sergio Oliveira
1 parent 87c02305

Moved voting to super_archives

colab/api/__init__.py
colab/api/urls.py
@@ -1,10 +0,0 @@ @@ -1,10 +0,0 @@
1 -# -*- coding: utf-8 -*-  
2 -  
3 -from django.conf.urls import patterns, include, url  
4 -  
5 -from .views import VoteView  
6 -  
7 -  
8 -urlpatterns = patterns('',  
9 - url(r'message/(?P<msg_id>\d+)/vote$', VoteView.as_view()),  
10 -)  
colab/api/views.py
@@ -1,45 +0,0 @@ @@ -1,45 +0,0 @@
1 -  
2 -from django import http  
3 -from django.db import IntegrityError  
4 -from django.views.generic import View  
5 -from django.core.exceptions import ObjectDoesNotExist  
6 -  
7 -  
8 -from colab.super_archives.models import Message  
9 -  
10 -  
11 -class VoteView(View):  
12 -  
13 - http_method_names = [u'get', u'put', u'delete', u'head']  
14 -  
15 - def put(self, request, msg_id):  
16 - if not request.user.is_authenticated():  
17 - return http.HttpResponseForbidden()  
18 -  
19 - try:  
20 - Message.objects.get(id=msg_id).vote(request.user)  
21 - except IntegrityError:  
22 - # 409 Conflict  
23 - # used for duplicated entries  
24 - return http.HttpResponse(status=409)  
25 -  
26 - # 201 Created  
27 - return http.HttpResponse(status=201)  
28 -  
29 - def get(self, request, msg_id):  
30 - votes = Message.objects.get(id=msg_id).votes_count()  
31 - return http.HttpResponse(votes, content_type='application/json')  
32 -  
33 - def delete(self, request, msg_id):  
34 - if not request.user.is_authenticated():  
35 - return http.HttpResponseForbidden()  
36 -  
37 - try:  
38 - Message.objects.get(id=msg_id).unvote(request.user)  
39 - except ObjectDoesNotExist:  
40 - return http.HttpResponseGone()  
41 -  
42 - # 204 No Content  
43 - # empty body, as per RFC2616.  
44 - # object deleted  
45 - return http.HttpResponse(status=204)  
colab/settings.py
@@ -52,7 +52,6 @@ INSTALLED_APPS = ( @@ -52,7 +52,6 @@ INSTALLED_APPS = (
52 'colab.home', 52 'colab.home',
53 'colab.plugins', 53 'colab.plugins',
54 'colab.super_archives', 54 'colab.super_archives',
55 - 'colab.api',  
56 'colab.rss', 55 'colab.rss',
57 'colab.search', 56 'colab.search',
58 'colab.tz', 57 'colab.tz',
colab/super_archives/templates/message-thread.html
@@ -59,7 +59,7 @@ @@ -59,7 +59,7 @@
59 console.debug('trying to vote'); 59 console.debug('trying to vote');
60 $btn.button('loading'); 60 $btn.button('loading');
61 $ajax = $.ajax({ 61 $ajax = $.ajax({
62 - url: "/api/message/" + msg_id + "/vote", 62 + url: "archives/message/" + msg_id + "/vote",
63 type: method, 63 type: method,
64 context: $btn.get(0), 64 context: $btn.get(0),
65 beforeSend: function(xhr, settings) { 65 beforeSend: function(xhr, settings) {
colab/super_archives/urls.py
1 from django.conf.urls import patterns, url 1 from django.conf.urls import patterns, url
2 2
3 -from .views import EmailView, EmailValidationView, ThreadView  
4 -from .views import ThreadDashboardView 3 +from .views import (EmailView, EmailValidationView, ThreadView,
  4 + ThreadDashboardView, VoteView)
5 5
6 6
7 urlpatterns = patterns( 7 urlpatterns = patterns(
@@ -13,4 +13,5 @@ urlpatterns = patterns( @@ -13,4 +13,5 @@ urlpatterns = patterns(
13 name="archive_email_validation_view"), 13 name="archive_email_validation_view"),
14 url(r'manage/email/(?P<key>[0-9a-z]{32})?', EmailView.as_view(), 14 url(r'manage/email/(?P<key>[0-9a-z]{32})?', EmailView.as_view(),
15 name="archive_email_view"), 15 name="archive_email_view"),
  16 + url(r'message/(?P<msg_id>\d+)/vote$', VoteView.as_view()),
16 ) 17 )
colab/super_archives/views.py
@@ -294,3 +294,40 @@ class EmailValidationView(View): @@ -294,3 +294,40 @@ class EmailValidationView(View):
294 return http.HttpResponseServerError() 294 return http.HttpResponseServerError()
295 295
296 return http.HttpResponse(status=204) 296 return http.HttpResponse(status=204)
  297 +
  298 +
  299 +class VoteView(View):
  300 +
  301 + http_method_names = [u'get', u'put', u'delete', u'head']
  302 +
  303 + def put(self, request, msg_id):
  304 + if not request.user.is_authenticated():
  305 + return http.HttpResponseForbidden()
  306 +
  307 + try:
  308 + Message.objects.get(id=msg_id).vote(request.user)
  309 + except IntegrityError:
  310 + # 409 Conflict
  311 + # used for duplicated entries
  312 + return http.HttpResponse(status=409)
  313 +
  314 + # 201 Created
  315 + return http.HttpResponse(status=201)
  316 +
  317 + def get(self, request, msg_id):
  318 + votes = Message.objects.get(id=msg_id).votes_count()
  319 + return http.HttpResponse(votes, content_type='application/json')
  320 +
  321 + def delete(self, request, msg_id):
  322 + if not request.user.is_authenticated():
  323 + return http.HttpResponseForbidden()
  324 +
  325 + try:
  326 + Message.objects.get(id=msg_id).unvote(request.user)
  327 + except ObjectDoesNotExist:
  328 + return http.HttpResponseGone()
  329 +
  330 + # 204 No Content
  331 + # empty body, as per RFC2616.
  332 + # object deleted
  333 + return http.HttpResponse(status=204)
@@ -12,7 +12,6 @@ urlpatterns = patterns(&#39;&#39;, @@ -12,7 +12,6 @@ urlpatterns = patterns(&#39;&#39;,
12 url(r'^robots.txt$', 'colab.home.views.robots', name='robots'), 12 url(r'^robots.txt$', 'colab.home.views.robots', name='robots'),
13 url(r'^dashboard$', 'colab.home.views.dashboard', name='dashboard'), 13 url(r'^dashboard$', 'colab.home.views.dashboard', name='dashboard'),
14 url(r'^search/', include('colab.search.urls')), 14 url(r'^search/', include('colab.search.urls')),
15 - url(r'^api/', include('colab.api.urls')),  
16 url(r'^rss/', include('colab.rss.urls')), 15 url(r'^rss/', include('colab.rss.urls')),
17 16
18 url(r'^account/', include('colab.accounts.urls')), 17 url(r'^account/', include('colab.accounts.urls')),