diff --git a/apps/collection/admin.py b/apps/collection/admin.py index 90a32564..3d0a8e3c 100644 --- a/apps/collection/admin.py +++ b/apps/collection/admin.py @@ -16,4 +16,3 @@ class CollectionItemAdmin(admin.ModelAdmin): @admin.register(models.Guide) class GuideAdmin(admin.ModelAdmin): """Guide admin.""" - diff --git a/apps/collection/serializers/__init__.py b/apps/collection/serializers/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/collection/serializers/common.py b/apps/collection/serializers/common.py new file mode 100644 index 00000000..c2d1154f --- /dev/null +++ b/apps/collection/serializers/common.py @@ -0,0 +1,42 @@ +from rest_framework import serializers +from collection import models + + +class CollectionSerializer(serializers.ModelSerializer): + """Collection serializer""" + class Meta: + model = models.Collection + fields = [ + 'name', + 'start', + 'end', + 'filters', + 'selectors', + 'targets', + 'country' + ] + + +class CollectionItemSerializer(serializers.ModelSerializer): + """CollectionItem serializer""" + class Meta: + model = models.CollectionItem + fields = [ + 'collection', + 'item_type', + 'item_ids' + ] + + +class GuideSerializer(serializers.ModelSerializer): + """Guide serializer""" + class Meta: + model = models.Guide + fields = [ + 'name', + 'start', + 'end', + 'parent', + 'advertorials', + 'collection' + ] diff --git a/apps/collection/serializers/web.py b/apps/collection/serializers/web.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/collection/urls/__init__.py b/apps/collection/urls/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/collection/urls/common.py b/apps/collection/urls/common.py new file mode 100644 index 00000000..8ae1e92f --- /dev/null +++ b/apps/collection/urls/common.py @@ -0,0 +1,41 @@ +"""Collection common urlpaths.""" +from django.urls import path + +from collection.views import common as views + +app_name = 'collection' + +urlpatterns = [ + path('list/', views.CollectionListView.as_view(), + name='collections_list'), + path('create/', views.CollectionCreateView.as_view(), + name='collection_create'), + path('/', views.CollectionRetrieveView.as_view(), + name='collection_retrieve'), + path('/delete/', views.CollectionDestroyView.as_view(), + name='collection_destroy'), + path('/update/', views.CollectionUpdateView.as_view(), + name='collection_update'), + + path('collection_items/', views.CollectionItemListView.as_view(), + name='collection_items_list'), + path('collection_items/create/', views.CollectionItemCreateView.as_view(), + name='collection_items_create'), + path('collection_items//', views.CollectionItemRetrieveView.as_view(), + name='collection_items_retrieve'), + path('collection_items//delete/', views.CollectionDestroyView.as_view(), + name='collection_items_destroy'), + path('collection_items//update/', views.CollectionItemUpdateView.as_view(), + name='collection_items_update'), + + path('guides/', views.GuideListView.as_view(), + name='guides_list'), + path('guides/create/', views.GuideCreateView.as_view(), + name='guide_create'), + path('guides//', views.GuideRetrieveView.as_view(), + name='guide_retrieve'), + path('guides//delete/', views.GuideDestroyView.as_view(), + name='guide_destroy'), + path('guides//update/', views.GuideUpdateView.as_view(), + name='guide_update'), +] diff --git a/apps/collection/urls/web.py b/apps/collection/urls/web.py new file mode 100644 index 00000000..85cdf1a5 --- /dev/null +++ b/apps/collection/urls/web.py @@ -0,0 +1,9 @@ +"""Collection app urlconf.""" +from collection.urls.common import urlpatterns as common_url_patterns + + +urlpatterns_api = [] + + +urlpatterns = urlpatterns_api + \ + common_url_patterns diff --git a/apps/collection/views/__init__.py b/apps/collection/views/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/apps/collection/views/common.py b/apps/collection/views/common.py new file mode 100644 index 00000000..73f8e47d --- /dev/null +++ b/apps/collection/views/common.py @@ -0,0 +1,103 @@ +from rest_framework import generics +from rest_framework import permissions +from collection import models +from collection.serializers import common as serializers + + +# Mixins +class CollectionViewMixin(generics.GenericAPIView): + """Mixin for Collection view""" + model = models.Collection + queryset = models.Collection.objects.all() + + +class CollectionItemViewMixin(generics.GenericAPIView): + """Mixin for CollectionItem view""" + model = models.CollectionItem + queryset = models.CollectionItem.objects.all() + + +class GuideViewMixin(generics.GenericAPIView): + """Mixin for Guide view""" + model = models.Guide + queryset = models.Guide.objects.all() + + +# Views +class CollectionListView(CollectionViewMixin, generics.ListAPIView): + """List Collection view""" + permission_classes = (permissions.AllowAny,) + serializer_class = serializers.CollectionSerializer + + +class CollectionRetrieveView(CollectionViewMixin, generics.RetrieveAPIView): + """Retrieve Collection view""" + serializer_class = serializers.CollectionSerializer + + +class CollectionCreateView(CollectionViewMixin, generics.CreateAPIView): + """Create Collection view""" + serializer_class = serializers.CollectionSerializer + + +class CollectionDestroyView(CollectionViewMixin, generics.DestroyAPIView): + """Destroy Collection view""" + serializer_class = serializers.CollectionSerializer + + +class CollectionUpdateView(CollectionViewMixin, generics.UpdateAPIView): + """Update Collection view""" + serializer = serializers.CollectionSerializer + + +class CollectionItemListView(CollectionItemViewMixin, generics.ListAPIView): + """List CollectionItem view""" + permission_classes = (permissions.AllowAny,) + serializer_class = serializers.CollectionItemSerializer + + +class CollectionItemRetrieveView(CollectionItemViewMixin, generics.RetrieveAPIView): + """Retrieve CollectionItem view""" + serializer_class = serializers.CollectionItemSerializer + + +class CollectionItemCreateView(CollectionItemViewMixin, generics.CreateAPIView): + """Create CollectionItem view""" + serializer_class = serializers.CollectionItemSerializer + + +class CollectionItemDestroyView(CollectionItemViewMixin, generics.DestroyAPIView): + """Destroy CollectionItem view""" + serializer_class = serializers.CollectionItemSerializer + + +class CollectionItemUpdateView(CollectionItemViewMixin, generics.UpdateAPIView): + """Update CollectionItem view""" + serializer = serializers.CollectionItemSerializer + + +class GuideListView(GuideViewMixin, generics.ListAPIView): + """List Guide view""" + permission_classes = (permissions.AllowAny,) + serializer_class = serializers.GuideSerializer + + +class GuideRetrieveView(GuideViewMixin, generics.RetrieveAPIView): + """Retrieve Guide view""" + serializer_class = serializers.GuideSerializer + + +class GuideCreateView(GuideViewMixin, generics.CreateAPIView): + """Create Guide view""" + serializer_class = serializers.GuideSerializer + + +class GuideDestroyView(GuideViewMixin, generics.DestroyAPIView): + """Destroy Guide view""" + serializer_class = serializers.GuideSerializer + + +class GuideUpdateView(GuideViewMixin, generics.UpdateAPIView): + """Update Guide view""" + serializer = serializers.GuideSerializer + diff --git a/apps/collection/views/web.py b/apps/collection/views/web.py new file mode 100644 index 00000000..e69de29b diff --git a/project/urls/web.py b/project/urls/web.py index 150b7806..8f8cb283 100644 --- a/project/urls/web.py +++ b/project/urls/web.py @@ -20,4 +20,5 @@ app_name = 'web' urlpatterns = [ path('account/', include('account.urls.web')), path('news/', include('news.urls.web')), + path('collection/', include('collection.urls.web')) ]