From f90e1cedede10a4a723bf6a9e9d0a811c9b603d4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=92=D0=B8=D0=BA=D1=82=D0=BE=D1=80=20=D0=93=D0=BB=D0=B0?= =?UTF-8?q?=D0=B4=D0=BA=D0=B8=D1=85?= Date: Thu, 3 Oct 2019 11:37:59 +0300 Subject: [PATCH] Add raiting --- apps/news/views.py | 14 ++++---------- apps/rating/tasks.py | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/apps/news/views.py b/apps/news/views.py index 1e24971f..24cac304 100644 --- a/apps/news/views.py +++ b/apps/news/views.py @@ -1,7 +1,7 @@ """News app views.""" from rest_framework import generics, permissions from news import filters, models, serializers - +from rating.tasks import add_rating class NewsMixinView: """News mixin.""" @@ -34,15 +34,6 @@ class NewsDetailView(NewsMixinView, generics.RetrieveAPIView): """Override get_queryset method.""" return super().get_queryset().with_extended_related() - def get(self, request, *args, **kwargs): - from rating.tasks import add_rating - print('SLUG') - add_rating.apply_async( - (1, '192.1.1.1.'), countdown=4 - ) - return self.retrieve(request, *args, **kwargs) - - class NewsTypeListView(generics.ListAPIView): """NewsType list view.""" @@ -84,3 +75,6 @@ class NewsBackOfficeRUDView(NewsBackOfficeMixinView, serializer_class = serializers.NewsBackOfficeDetailSerializer + def get(self, request, pk, *args, **kwargs): + add_rating(remote_addr=request.META.get('REMOTE_ADDR'), pk=pk, model='news') + return self.retrieve(request, *args, **kwargs) diff --git a/apps/rating/tasks.py b/apps/rating/tasks.py index d3d2216c..6b214e18 100644 --- a/apps/rating/tasks.py +++ b/apps/rating/tasks.py @@ -1,14 +1,22 @@ from datetime import timedelta -from celery.task import periodic_task, Task from celery import task +from rating.models import Rating +from django.contrib.contenttypes.models import ContentType - +def add_rating(remote_addr, pk, model): + add.apply_async( + (remote_addr, pk, model), countdown=60 + ) @task -def add_rating(object_id, ip): - print('object_id: ' + str(object_id)) - print('ip: ' + str(ip)) +def add(remote_addr, pk, model): + rating = Rating() + rating.ip = remote_addr + rating.object_id = pk + rating.content_type = ContentType.objects.get(model=model) + rating.save() +