add view count to news serializer

This commit is contained in:
Dmitriy Kuzmenko 2019-11-15 00:26:14 +03:00
parent c644cbfd64
commit 956467e999
2 changed files with 33 additions and 24 deletions

View File

@ -11,6 +11,30 @@ from utils.models import BaseAttributes, TJSONField, TranslatedFieldsMixin, Proj
from utils.querysets import TranslationQuerysetMixin
class Agenda(ProjectBaseMixin, TranslatedFieldsMixin):
"""News agenda model"""
event_datetime = models.DateTimeField(default=timezone.now, editable=False,
verbose_name=_('Event datetime'))
address = models.ForeignKey('location.Address', blank=True, null=True,
default=None, verbose_name=_('address'),
on_delete=models.SET_NULL)
content = TJSONField(blank=True, null=True, default=None,
verbose_name=_('content'),
help_text='{"en-GB":"some text"}')
class NewsBanner(ProjectBaseMixin, TranslatedFieldsMixin):
"""News banner model"""
title = TJSONField(blank=True, null=True, default=None,
verbose_name=_('title'),
help_text='{"en-GB":"some text"}')
image_url = models.URLField(verbose_name=_('Image URL path'),
blank=True, null=True, default=None)
content_url = models.URLField(verbose_name=_('Content URL path'),
blank=True, null=True, default=None)
class NewsType(models.Model):
"""NewsType model."""
@ -95,30 +119,6 @@ class NewsQuerySet(TranslationQuerysetMixin):
)
class Agenda(ProjectBaseMixin, TranslatedFieldsMixin):
"""News agenda model"""
event_datetime = models.DateTimeField(default=timezone.now, editable=False,
verbose_name=_('Event datetime'))
address = models.ForeignKey('location.Address', blank=True, null=True,
default=None, verbose_name=_('address'),
on_delete=models.SET_NULL)
content = TJSONField(blank=True, null=True, default=None,
verbose_name=_('content'),
help_text='{"en-GB":"some text"}')
class NewsBanner(ProjectBaseMixin, TranslatedFieldsMixin):
"""News banner model"""
title = TJSONField(blank=True, null=True, default=None,
verbose_name=_('title'),
help_text='{"en-GB":"some text"}')
image_url = models.URLField(verbose_name=_('Image URL path'),
blank=True, null=True, default=None)
content_url = models.URLField(verbose_name=_('Content URL path'),
blank=True, null=True, default=None)
class News(BaseAttributes, TranslatedFieldsMixin):
"""News model."""
@ -236,6 +236,13 @@ class News(BaseAttributes, TranslatedFieldsMixin):
if self.main_image:
return self.main_image.get_image_url(thumbnail_key='news_preview')
@property
def view_counter(self):
count_value = 0
if self.views_count:
count_value = self.views_count.count
return count_value
class NewsGalleryQuerySet(models.QuerySet):
"""QuerySet for model News"""

View File

@ -136,6 +136,7 @@ class NewsBaseSerializer(ProjectModelSerializer):
news_type = NewsTypeSerializer(read_only=True)
tags = TagBaseSerializer(read_only=True, many=True)
in_favorites = serializers.BooleanField(allow_null=True)
view_counter = serializers.IntegerField(read_only=True)
class Meta:
"""Meta class."""
@ -150,6 +151,7 @@ class NewsBaseSerializer(ProjectModelSerializer):
'tags',
'slug',
'in_favorites',
'view_counter'
)