Add rating value in news
This commit is contained in:
parent
295bda4b4f
commit
14cf7d7b1b
|
|
@ -5,6 +5,8 @@ from django.utils import timezone
|
|||
from django.utils.translation import gettext_lazy as _
|
||||
from rest_framework.reverse import reverse
|
||||
from utils.models import BaseAttributes, TJSONField, TranslatedFieldsMixin
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from rating.models import Rating
|
||||
from random import sample as random_sample
|
||||
|
||||
|
||||
|
|
@ -27,6 +29,9 @@ class NewsType(models.Model):
|
|||
class NewsQuerySet(models.QuerySet):
|
||||
"""QuerySet for model News"""
|
||||
|
||||
def rating_value(self):
|
||||
return self.annotate(rating=models.Count('ratings'))
|
||||
|
||||
def with_base_related(self):
|
||||
"""Return qs with related objects."""
|
||||
return self.select_related('news_type', 'country').prefetch_related('tags')
|
||||
|
|
@ -132,6 +137,8 @@ class News(BaseAttributes, TranslatedFieldsMixin):
|
|||
verbose_name=_('country'))
|
||||
tags = generic.GenericRelation(to='main.MetaDataContent')
|
||||
|
||||
ratings = generic.GenericRelation(Rating)
|
||||
|
||||
objects = NewsQuerySet.as_manager()
|
||||
|
||||
class Meta:
|
||||
|
|
|
|||
|
|
@ -76,5 +76,5 @@ 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')
|
||||
add_rating(remote_addr=request.META.get('REMOTE_ADDR'), pk=pk, model='news', app_label='news',)
|
||||
return self.retrieve(request, *args, **kwargs)
|
||||
|
|
|
|||
|
|
@ -4,18 +4,18 @@ from rating.models import Rating
|
|||
from django.contrib.contenttypes.models import ContentType
|
||||
|
||||
|
||||
def add_rating(remote_addr, pk, model):
|
||||
def add_rating(remote_addr, pk, model, app_label):
|
||||
add.apply_async(
|
||||
(remote_addr, pk, model), countdown=60 * 60
|
||||
(remote_addr, pk, model, app_label), countdown=60 * 60
|
||||
)
|
||||
|
||||
|
||||
@task
|
||||
def add(remote_addr, pk, model):
|
||||
def add(remote_addr, pk, model, app_label):
|
||||
rating = Rating()
|
||||
rating.ip = remote_addr
|
||||
rating.object_id = pk
|
||||
rating.content_type = ContentType.objects.get(model=model)
|
||||
rating.content_type = ContentType.objects.get(app_label=app_label, model=model)
|
||||
rating.save()
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user