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   -# -*- 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   -
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 52 'colab.home',
53 53 'colab.plugins',
54 54 'colab.super_archives',
55   - 'colab.api',
56 55 'colab.rss',
57 56 'colab.search',
58 57 'colab.tz',
... ...
colab/super_archives/templates/message-thread.html
... ... @@ -59,7 +59,7 @@
59 59 console.debug('trying to vote');
60 60 $btn.button('loading');
61 61 $ajax = $.ajax({
62   - url: "/api/message/" + msg_id + "/vote",
  62 + url: "archives/message/" + msg_id + "/vote",
63 63 type: method,
64 64 context: $btn.get(0),
65 65 beforeSend: function(xhr, settings) {
... ...
colab/super_archives/urls.py
1 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 7 urlpatterns = patterns(
... ... @@ -13,4 +13,5 @@ urlpatterns = patterns(
13 13 name="archive_email_validation_view"),
14 14 url(r'manage/email/(?P<key>[0-9a-z]{32})?', EmailView.as_view(),
15 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 294 return http.HttpResponseServerError()
295 295  
296 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)
... ...
colab/urls.py
... ... @@ -12,7 +12,6 @@ urlpatterns = patterns(&#39;&#39;,
12 12 url(r'^robots.txt$', 'colab.home.views.robots', name='robots'),
13 13 url(r'^dashboard$', 'colab.home.views.dashboard', name='dashboard'),
14 14 url(r'^search/', include('colab.search.urls')),
15   - url(r'^api/', include('colab.api.urls')),
16 15 url(r'^rss/', include('colab.rss.urls')),
17 16  
18 17 url(r'^account/', include('colab.accounts.urls')),
... ...