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() +