added migrations, added ListAPI view endpoint

This commit is contained in:
Anatoly 2019-08-26 15:27:33 +03:00
parent 27468ded83
commit da52f38b7f
7 changed files with 119 additions and 3 deletions

View File

@ -1 +1,9 @@
# Register your models here.
"""Admin models for app advertisement"""
from django.contrib import admin
from advertisement import models
@admin.register(models.Advertisement)
class AdvertisementModelAdmin(admin.ModelAdmin):
"""Admin model for model Advertisement"""

View File

@ -0,0 +1,34 @@
# Generated by Django 2.2.4 on 2019-08-26 12:24
from django.db import migrations, models
import django.utils.timezone
import easy_thumbnails.fields
import utils.methods
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Advertisement',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created', models.DateTimeField(default=django.utils.timezone.now, editable=False, verbose_name='Date created')),
('modified', models.DateTimeField(auto_now=True, verbose_name='Date updated')),
('image', easy_thumbnails.fields.ThumbnailerImageField(blank=True, default=None, null=True, upload_to=utils.methods.image_path, verbose_name='Image')),
('url', models.URLField(verbose_name='Ad URL')),
('width', models.PositiveIntegerField(verbose_name='Block width')),
('height', models.PositiveIntegerField(verbose_name='Block height')),
('block_level', models.PositiveSmallIntegerField(choices=[(1, 'Ad block level 1'), (2, 'Ad block level 2'), (3, 'Ad block level 3')], verbose_name='Block level')),
],
options={
'verbose_name': 'Advertisement',
'verbose_name_plural': 'Advertisement',
},
),
]

View File

@ -1 +1,32 @@
# Create your models here.
"""Advertisement app models."""
from django.db import models
from django.utils.translation import gettext_lazy as _
from utils.models import ProjectBaseMixin, ImageMixin
class Advertisement(ImageMixin, ProjectBaseMixin):
"""Advertisement model."""
LEVEL_1 = 1
LEVEL_2 = 2
LEVEL_3 = 3
BLOCK_LEVEL_CHOICES = (
(LEVEL_1, _('Ad block level 1')),
(LEVEL_2, _('Ad block level 2')),
(LEVEL_3, _('Ad block level 3'))
)
url = models.URLField(verbose_name=_('Ad URL'))
width = models.PositiveIntegerField(verbose_name=_('Block width'))
height = models.PositiveIntegerField(verbose_name=_('Block height'))
block_level = models.PositiveSmallIntegerField(choices=BLOCK_LEVEL_CHOICES,
verbose_name=_('Block level'))
class Meta:
verbose_name = _('Advertisement')
verbose_name_plural = _('Advertisement')
def __str__(self):
return str(self.url)

View File

@ -0,0 +1,19 @@
"""Serializers for app advertisements"""
from rest_framework import serializers
from advertisement import models
class AdvertisementSerializer(serializers.ModelSerializer):
"""Serializer for model Advertisement."""
class Meta:
model = models.Advertisement
fields = (
'id',
'url',
'image',
'width',
'height',
'block_level',
)

View File

@ -0,0 +1,10 @@
"""Advertisement common urlpaths."""
from django.urls import path
from advertisement.views import web as views
app_name = 'advertisement'
urlpatterns = [
path('list/', views.AdvertisementListView.as_view(), name='advertisements_list')
]

View File

@ -1 +1,14 @@
# Create your views here.
"""Views for app advertisement"""
from rest_framework import generics
from rest_framework import permissions
from advertisement import models
from advertisement.serializers import web as serializers
class AdvertisementListView(generics.ListAPIView):
"""List view for model Advertisement"""
model = models.Advertisement
permission_classes = (permissions.AllowAny, )
queryset = models.Advertisement.objects.all()
serializer_class = serializers.AdvertisementSerializer

View File

@ -22,4 +22,5 @@ urlpatterns = [
path('news/', include('news.urls.web')),
path('collection/', include('collection.urls.web')),
path('partner/', include('partner.urls.web')),
path('advertisement/', include('advertisement.urls.web'))
]