diff --git a/apps/partner/admin.py b/apps/partner/admin.py index 846f6b40..f2973f75 100644 --- a/apps/partner/admin.py +++ b/apps/partner/admin.py @@ -1 +1,8 @@ -# Register your models here. +from django.contrib import admin + +from partner import models + + +@admin.register(models.Partner) +class PartnerModelAdmin(admin.ModelAdmin): + """Model admin for Partner model.""" diff --git a/apps/partner/migrations/0001_initial.py b/apps/partner/migrations/0001_initial.py new file mode 100644 index 00000000..0cff169e --- /dev/null +++ b/apps/partner/migrations/0001_initial.py @@ -0,0 +1,31 @@ +# Generated by Django 2.2.4 on 2019-08-23 13:50 + +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='Partner', + 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='Partner URL')), + ], + options={ + 'verbose_name': 'partner', + 'verbose_name_plural': 'partners', + }, + ), + ] diff --git a/apps/partner/models.py b/apps/partner/models.py index 77ea233c..9753b547 100644 --- a/apps/partner/models.py +++ b/apps/partner/models.py @@ -7,3 +7,10 @@ from utils.models import ImageMixin, ProjectBaseMixin class Partner(ProjectBaseMixin, ImageMixin): """Partner model.""" url = models.URLField(verbose_name=_('Partner URL')) + + class Meta: + verbose_name = _('partner') + verbose_name_plural = _('partners') + + def __str__(self): + return f'{self.url}' diff --git a/apps/partner/serializers/common.py b/apps/partner/serializers/common.py index f6d3b113..c770ca80 100644 --- a/apps/partner/serializers/common.py +++ b/apps/partner/serializers/common.py @@ -1 +1,15 @@ -# Mixin +from rest_framework import serializers + +from partner import models + + +# Serializers +class PartnerSerializer(serializers.ModelSerializer): + """Serializer for model Partner""" + class Meta: + """Meta class""" + model = models.Partner + fields = ( + 'id', + 'url' + ) diff --git a/apps/partner/urls/common.py b/apps/partner/urls/common.py index eac05bb1..e93fe916 100644 --- a/apps/partner/urls/common.py +++ b/apps/partner/urls/common.py @@ -1,4 +1,11 @@ """Partner app common urlconf.""" +from django.urls import path + +from partner.views import common as views + +app_name = 'partner' urlpatterns = [ + path('list/', views.PartnerListView.as_view(), + name='partner_list') ] diff --git a/apps/partner/views/common.py b/apps/partner/views/common.py index e69de29b..b495abb5 100644 --- a/apps/partner/views/common.py +++ b/apps/partner/views/common.py @@ -0,0 +1,18 @@ +from rest_framework import generics +from rest_framework import permissions + +from partner import models +from partner.serializers import common as serializers + + +# Mixins +class PartnerViewMixin(generics.GenericAPIView): + """View mixin for Partner views""" + queryset = models.Partner.objects.all() + + +# Views +class PartnerListView(PartnerViewMixin, generics.ListAPIView): + """List Partner view""" + permission_classes = (permissions.AllowAny, ) + serializer_class = serializers.PartnerSerializer diff --git a/project/settings/base.py b/project/settings/base.py index 15ff3b76..75a54cb9 100644 --- a/project/settings/base.py +++ b/project/settings/base.py @@ -59,6 +59,7 @@ PROJECT_APPS = [ 'news.apps.NewsConfig', 'translation.apps.TranslationConfig', 'collection.apps.CollectionConfig', + 'partner.apps.PartnerConfig' ] EXTERNAL_APPS = [ diff --git a/project/urls/web.py b/project/urls/web.py index 8f8cb283..3d3d77b0 100644 --- a/project/urls/web.py +++ b/project/urls/web.py @@ -20,5 +20,6 @@ app_name = 'web' urlpatterns = [ path('account/', include('account.urls.web')), path('news/', include('news.urls.web')), - path('collection/', include('collection.urls.web')) + path('collection/', include('collection.urls.web')), + path('partner/', include('partner.urls.web')), ]