diff --git a/colab/api/__init__.py b/colab/api/__init__.py deleted file mode 100644 index e69de29..0000000 --- a/colab/api/__init__.py +++ /dev/null diff --git a/colab/api/urls.py b/colab/api/urls.py deleted file mode 100644 index 9f198f4..0000000 --- a/colab/api/urls.py +++ /dev/null @@ -1,10 +0,0 @@ -# -*- coding: utf-8 -*- - -from django.conf.urls import patterns, include, url - -from .views import VoteView - - -urlpatterns = patterns('', - url(r'message/(?P\d+)/vote$', VoteView.as_view()), -) diff --git a/colab/api/views.py b/colab/api/views.py deleted file mode 100644 index dc50bc7..0000000 --- a/colab/api/views.py +++ /dev/null @@ -1,45 +0,0 @@ - -from django import http -from django.db import IntegrityError -from django.views.generic import View -from django.core.exceptions import ObjectDoesNotExist - - -from colab.super_archives.models import Message - - -class VoteView(View): - - http_method_names = [u'get', u'put', u'delete', u'head'] - - def put(self, request, msg_id): - if not request.user.is_authenticated(): - return http.HttpResponseForbidden() - - try: - Message.objects.get(id=msg_id).vote(request.user) - except IntegrityError: - # 409 Conflict - # used for duplicated entries - return http.HttpResponse(status=409) - - # 201 Created - return http.HttpResponse(status=201) - - def get(self, request, msg_id): - votes = Message.objects.get(id=msg_id).votes_count() - return http.HttpResponse(votes, content_type='application/json') - - def delete(self, request, msg_id): - if not request.user.is_authenticated(): - return http.HttpResponseForbidden() - - try: - Message.objects.get(id=msg_id).unvote(request.user) - except ObjectDoesNotExist: - return http.HttpResponseGone() - - # 204 No Content - # empty body, as per RFC2616. - # object deleted - return http.HttpResponse(status=204) diff --git a/colab/settings.py b/colab/settings.py index 093528c..971c2aa 100644 --- a/colab/settings.py +++ b/colab/settings.py @@ -52,7 +52,6 @@ INSTALLED_APPS = ( 'colab.home', 'colab.plugins', 'colab.super_archives', - 'colab.api', 'colab.rss', 'colab.search', 'colab.tz', diff --git a/colab/super_archives/templates/message-thread.html b/colab/super_archives/templates/message-thread.html index e135e8b..93028c5 100644 --- a/colab/super_archives/templates/message-thread.html +++ b/colab/super_archives/templates/message-thread.html @@ -59,7 +59,7 @@ console.debug('trying to vote'); $btn.button('loading'); $ajax = $.ajax({ - url: "/api/message/" + msg_id + "/vote", + url: "archives/message/" + msg_id + "/vote", type: method, context: $btn.get(0), beforeSend: function(xhr, settings) { diff --git a/colab/super_archives/urls.py b/colab/super_archives/urls.py index dae37e3..51dba05 100644 --- a/colab/super_archives/urls.py +++ b/colab/super_archives/urls.py @@ -1,7 +1,7 @@ from django.conf.urls import patterns, url -from .views import EmailView, EmailValidationView, ThreadView -from .views import ThreadDashboardView +from .views import (EmailView, EmailValidationView, ThreadView, + ThreadDashboardView, VoteView) urlpatterns = patterns( @@ -13,4 +13,5 @@ urlpatterns = patterns( name="archive_email_validation_view"), url(r'manage/email/(?P[0-9a-z]{32})?', EmailView.as_view(), name="archive_email_view"), + url(r'message/(?P\d+)/vote$', VoteView.as_view()), ) diff --git a/colab/super_archives/views.py b/colab/super_archives/views.py index 63789c0..73cf761 100644 --- a/colab/super_archives/views.py +++ b/colab/super_archives/views.py @@ -294,3 +294,40 @@ class EmailValidationView(View): return http.HttpResponseServerError() return http.HttpResponse(status=204) + + +class VoteView(View): + + http_method_names = [u'get', u'put', u'delete', u'head'] + + def put(self, request, msg_id): + if not request.user.is_authenticated(): + return http.HttpResponseForbidden() + + try: + Message.objects.get(id=msg_id).vote(request.user) + except IntegrityError: + # 409 Conflict + # used for duplicated entries + return http.HttpResponse(status=409) + + # 201 Created + return http.HttpResponse(status=201) + + def get(self, request, msg_id): + votes = Message.objects.get(id=msg_id).votes_count() + return http.HttpResponse(votes, content_type='application/json') + + def delete(self, request, msg_id): + if not request.user.is_authenticated(): + return http.HttpResponseForbidden() + + try: + Message.objects.get(id=msg_id).unvote(request.user) + except ObjectDoesNotExist: + return http.HttpResponseGone() + + # 204 No Content + # empty body, as per RFC2616. + # object deleted + return http.HttpResponse(status=204) diff --git a/colab/urls.py b/colab/urls.py index ae2e4f8..cf8f5b3 100644 --- a/colab/urls.py +++ b/colab/urls.py @@ -12,7 +12,6 @@ urlpatterns = patterns('', url(r'^robots.txt$', 'colab.home.views.robots', name='robots'), url(r'^dashboard$', 'colab.home.views.dashboard', name='dashboard'), url(r'^search/', include('colab.search.urls')), - url(r'^api/', include('colab.api.urls')), url(r'^rss/', include('colab.rss.urls')), url(r'^account/', include('colab.accounts.urls')), -- libgit2 0.21.2