intermediate commit

This commit is contained in:
Anatoly 2019-12-10 17:44:29 +03:00
parent ab82d9a2d6
commit 7d40471084
7 changed files with 81 additions and 18 deletions

View File

@ -96,3 +96,43 @@ class GuideBaseSerializer(serializers.ModelSerializer):
extra_kwargs = {
'state': {'write_only': True},
}
class GuideFilterBaseSerializer(serializers.ModelSerializer):
"""GuideFilter serializer"""
class Meta:
"""Meta class."""
model = models.GuideFilter
fields = [
'id',
'establishment_type_json',
'country_json',
'region_json',
'sub_region_json',
'wine_region_json',
'with_mark',
'locale_json',
'max_mark',
'min_mark',
'review_vintage_json',
'review_state_json',
'guide',
]
extra_kwargs = {
'guide': {'write_only': True}
}
@property
def request_kwargs(self):
"""Get url kwargs from request."""
return self.context.get('request').parser_context.get('kwargs')
def get_guide(self):
"""Get guide instance from kwargs."""
return self.request_kwargs.get()
def create(self, validated_data):
"""Overridden create method."""
validated_data['guide'] = self.get_guide(validated_data.pop('guide', None))
return super().create(validated_data)

View File

@ -1,5 +1,6 @@
"""Collection common urlpaths."""
from rest_framework.routers import SimpleRouter
from django.urls import path
from collection.views import back as views
@ -7,6 +8,10 @@ app_name = 'collection'
router = SimpleRouter()
router.register(r'collections', views.CollectionBackOfficeViewSet)
router.register(r'guides', views.GuideBackOfficeViewSet)
urlpatterns = router.urls
urlpatterns = [
path('guides/', views.GuideListCreateView.as_view(),
name='guide-list-create'),
path('guides/<int:pk>/filters/', views.GuideFilterCreateView.as_view(),
name='guide-filter-list-create'),
] + router.urls

View File

@ -1,5 +1,5 @@
from rest_framework import permissions
from rest_framework import viewsets, mixins
from rest_framework import viewsets, mixins, generics
from collection import models, serializers
from utils.views import BindObjectMixin
@ -14,7 +14,7 @@ class CollectionViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = serializers.CollectionBackOfficeSerializer
class GuideViewSet(viewsets.ModelViewSet):
class GuideBaseView(generics.GenericAPIView):
"""ViewSet for Guide model."""
pagination_class = None
queryset = models.Guide.objects.all()
@ -22,6 +22,14 @@ class GuideViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,)
class GuideFilterBaseView(generics.GenericAPIView):
"""ViewSet for GuideFilter model."""
pagination_class = None
queryset = models.GuideFilter.objects.all()
serializer_class = serializers.GuideFilterBaseSerializer
permission_classes = (permissions.IsAuthenticated,)
class CollectionBackOfficeViewSet(mixins.CreateModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
@ -54,5 +62,11 @@ class CollectionBackOfficeViewSet(mixins.CreateModelMixin,
collection.products.remove(related_object)
class GuideBackOfficeViewSet(GuideViewSet):
class GuideListCreateView(GuideBaseView,
generics.ListCreateAPIView):
"""ViewSet for Guide model for BackOffice users."""
class GuideFilterCreateView(GuideFilterBaseView,
generics.CreateAPIView):
"""ViewSet for GuideFilter model for BackOffice users."""

View File

@ -225,18 +225,19 @@ class EstablishmentBackOfficeGallerySerializer(serializers.ModelSerializer):
'is_main',
]
def get_request_kwargs(self):
@property
def request_kwargs(self):
"""Get url kwargs from request."""
return self.context.get('request').parser_context.get('kwargs')
def validate(self, attrs):
"""Override validate method."""
establishment_pk = self.get_request_kwargs().get('pk')
establishment_slug = self.get_request_kwargs().get('slug')
establishment_pk = self.request_kwargs.get('pk')
establishment_slug = self.request_kwargs.get('slug')
search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_slug}
image_id = self.get_request_kwargs().get('image_id')
image_id = self.request_kwargs.get('image_id')
establishment_qs = models.Establishment.objects.filter(**search_kwargs)
image_qs = Image.objects.filter(id=image_id)

View File

@ -35,14 +35,15 @@ class CityGallerySerializer(serializers.ModelSerializer):
'is_main',
]
def get_request_kwargs(self):
@property
def request_kwargs(self):
"""Get url kwargs from request."""
return self.context.get('request').parser_context.get('kwargs')
def validate(self, attrs):
"""Override validate method."""
city_pk = self.get_request_kwargs().get('pk')
image_id = self.get_request_kwargs().get('image_id')
city_pk = self.request_kwargs.get('pk')
image_id = self.request_kwargs.get('image_id')
city_qs = models.City.objects.filter(pk=city_pk)
image_qs = Image.objects.filter(id=image_id)

View File

@ -217,14 +217,15 @@ class NewsBackOfficeGallerySerializer(serializers.ModelSerializer):
'is_main',
]
def get_request_kwargs(self):
@property
def request_kwargs(self):
"""Get url kwargs from request."""
return self.context.get('request').parser_context.get('kwargs')
def validate(self, attrs):
"""Override validate method."""
news_pk = self.get_request_kwargs().get('pk')
image_id = self.get_request_kwargs().get('image_id')
news_pk = self.request_kwargs.get('pk')
image_id = self.request_kwargs.get('image_id')
news_qs = models.News.objects.filter(pk=news_pk)
image_qs = Image.objects.filter(id=image_id)

View File

@ -22,14 +22,15 @@ class ProductBackOfficeGallerySerializer(serializers.ModelSerializer):
'is_main',
]
def get_request_kwargs(self):
@property
def request_kwargs(self):
"""Get url kwargs from request."""
return self.context.get('request').parser_context.get('kwargs')
def validate(self, attrs):
"""Override validate method."""
product_pk = self.get_request_kwargs().get('pk')
image_id = self.get_request_kwargs().get('image_id')
product_pk = self.request_kwargs.get('pk')
image_id = self.request_kwargs.get('image_id')
product_qs = models.Product.objects.filter(pk=product_pk)
image_qs = Image.objects.filter(id=image_id)