Commit 9c0fc2b40162ff2e2162cb0d6b56d0c07448c351
1 parent
87c02305
Exists in
master
and in
31 other branches
Moved voting to super_archives
Showing
8 changed files
with
41 additions
and
60 deletions
Show diff stats
colab/api/__init__.py
colab/api/urls.py
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) |
colab/urls.py
| @@ -12,7 +12,6 @@ urlpatterns = patterns('', | @@ -12,7 +12,6 @@ urlpatterns = patterns('', | ||
| 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')), |