Add raiting

This commit is contained in:
Виктор Гладких 2019-10-03 11:37:59 +03:00
parent f0001eef93
commit f90e1ceded
2 changed files with 17 additions and 15 deletions

View File

@ -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)

View File

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