advertisement

This commit is contained in:
Kuroshini 2020-01-21 13:47:30 +03:00
parent 8235c6d172
commit f3dca356ad
4 changed files with 48 additions and 1 deletions

View File

@ -0,0 +1,29 @@
# Generated by Django 2.2.7 on 2020-01-21 10:27
import django.core.validators
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('advertisement', '0008_auto_20191116_1135'),
]
operations = [
migrations.AddField(
model_name='advertisement',
name='duration',
field=models.FloatField(default=1.0, validators=[django.core.validators.MinValueValidator(0.01)], verbose_name='display duration in seconds'),
),
migrations.AddField(
model_name='advertisement',
name='frequency_percentage',
field=models.FloatField(default=100, validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)], verbose_name='Probability to show'),
),
migrations.AddField(
model_name='advertisement',
name='views_count',
field=models.IntegerField(default=0, verbose_name='How many times shown'),
),
]

View File

@ -2,9 +2,11 @@
import uuid import uuid
from django.db import models from django.db import models
from django.core.validators import MinValueValidator, MaxValueValidator
from django.utils import timezone from django.utils import timezone
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from location.models import Country
from main.models import Page from main.models import Page
from translation.models import Language from translation.models import Language
from utils.models import ProjectBaseMixin, ImageMixin, PlatformMixin, URLImageMixin from utils.models import ProjectBaseMixin, ImageMixin, PlatformMixin, URLImageMixin
@ -54,7 +56,11 @@ class Advertisement(ProjectBaseMixin):
null=True, null=True,
related_name='advertisements', related_name='advertisements',
verbose_name=_('page type')) verbose_name=_('page type'))
duration = models.FloatField(default=1.0, verbose_name=_('display duration in seconds'),
validators=[MinValueValidator(0.01)])
frequency_percentage = models.FloatField(validators=[MinValueValidator(0), MaxValueValidator(100)], default=100,
verbose_name=_('Probability to show'))
views_count = models.IntegerField(default=0, verbose_name=_('How many times shown'))
objects = AdvertisementQuerySet.as_manager() objects = AdvertisementQuerySet.as_manager()
class Meta: class Meta:

View File

@ -12,4 +12,6 @@ class AdvertisementPageTypeMobileListSerializer(AdvertisementSerializer):
"""Meta class.""" """Meta class."""
fields = AdvertisementSerializer.Meta.fields + [ fields = AdvertisementSerializer.Meta.fields + [
'pages', 'pages',
'duration',
'views_count',
] ]

View File

@ -1,4 +1,7 @@
"""Mobile views for app advertisement""" """Mobile views for app advertisement"""
import random
from django.db.models import F
from advertisement.serializers import AdvertisementPageTypeMobileListSerializer from advertisement.serializers import AdvertisementPageTypeMobileListSerializer
from .common import AdvertisementPageTypeListView from .common import AdvertisementPageTypeListView
@ -7,3 +10,10 @@ class AdvertisementPageTypeMobileListView(AdvertisementPageTypeListView):
"""Advertisement mobile list view.""" """Advertisement mobile list view."""
serializer_class = AdvertisementPageTypeMobileListSerializer serializer_class = AdvertisementPageTypeMobileListSerializer
def get_queryset(self):
percentage = random.randrange(0, 100)
qs = super().get_queryset().exclude(frequency_percentage__lte=percentage)
qs.update(views_count=F('views_count') + 1)
return qs