From dd7a373f6862d0de731008e1f7fa9446ccbc0bae Mon Sep 17 00:00:00 2001 From: luxcem Date: Sat, 22 Apr 2017 16:47:51 +0200 Subject: [PATCH] adds votes views and urls --- apps/rp/urls.py | 15 +++++++++++++++ apps/rp/views.py | 3 --- apps/rp/views/__init__.py | 1 + apps/rp/views/votes.py | 40 +++++++++++++++++++++++++++++++++++++++ project/urls.py | 4 +++- 5 files changed, 59 insertions(+), 4 deletions(-) create mode 100644 apps/rp/urls.py delete mode 100644 apps/rp/views.py create mode 100644 apps/rp/views/__init__.py create mode 100644 apps/rp/views/votes.py diff --git a/apps/rp/urls.py b/apps/rp/urls.py new file mode 100644 index 0000000..12bc9bf --- /dev/null +++ b/apps/rp/urls.py @@ -0,0 +1,15 @@ +from django.conf.urls import url +from rp.views import upvote, downvote + +urlpatterns = [ + url( + r"^votes/upvote/(?P\d+)/(?P\d+)$", + upvote, + name="und-upvote" + ), + url( + r"^votes/downvote/(?P\d+)/(?P\d+)$", + downvote, + name="und-downvote" + ), +] diff --git a/apps/rp/views.py b/apps/rp/views.py deleted file mode 100644 index 91ea44a..0000000 --- a/apps/rp/views.py +++ /dev/null @@ -1,3 +0,0 @@ -from django.shortcuts import render - -# Create your views here. diff --git a/apps/rp/views/__init__.py b/apps/rp/views/__init__.py new file mode 100644 index 0000000..5f11b1a --- /dev/null +++ b/apps/rp/views/__init__.py @@ -0,0 +1 @@ +from .votes import upvote, downvote, UDList # noqa diff --git a/apps/rp/views/votes.py b/apps/rp/views/votes.py new file mode 100644 index 0000000..d6a17e9 --- /dev/null +++ b/apps/rp/views/votes.py @@ -0,0 +1,40 @@ +from django.views.generic import ListView +from django.contrib.contenttypes.models import ContentType +from django.http import HttpResponse + + +def upvote(request, content_type, object_id): + ct = ContentType.objects.get_for_id(content_type) + obj = ct.get_object_for_this_type(pk=object_id) + obj.upvote(user=request.user) + return HttpResponse({"success"}) + + +def downvote(request, content_type, object_id): + ct = ContentType.objects.get_for_id(content_type) + obj = ct.get_object_for_this_type(pk=object_id) + obj.downvote(user=request.user) + return HttpResponse({"success"}) + + +class UDList(ListView): + """ + Ads id upvoted by user + """ + def get_context_data(self, **kwargs): + content_type = ContentType.objects.get_for_model(self.model) + queryset = self.get_queryset() + context = super().get_context_data(**kwargs) + context["und_votes"] = { + "upvoted": queryset.filter( + und_votes__user=self.request.user, + und_votes__content_type=content_type, + und_votes__score=1 + ).values_list("id", flat=True), + "downvoted": queryset.filter( + und_votes__user=self.request.user, + und_votes__content_type=content_type, + und_votes__score=-1 + ).values_list("id", flat=True) + } + return context diff --git a/project/urls.py b/project/urls.py index 7bd6c63..a93d042 100644 --- a/project/urls.py +++ b/project/urls.py @@ -1,9 +1,11 @@ """ rp_new URL Configuration """ -from django.conf.urls import url + +from django.conf.urls import url, include from django.contrib import admin urlpatterns = [ url(r"^admin/", admin.site.urls), + url(r"^rp/", include("rp.urls")) ] -- GitLab