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 = { extra_kwargs = {
'state': {'write_only': True}, '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.""" """Collection common urlpaths."""
from rest_framework.routers import SimpleRouter from rest_framework.routers import SimpleRouter
from django.urls import path
from collection.views import back as views from collection.views import back as views
@ -7,6 +8,10 @@ app_name = 'collection'
router = SimpleRouter() router = SimpleRouter()
router.register(r'collections', views.CollectionBackOfficeViewSet) 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 permissions
from rest_framework import viewsets, mixins from rest_framework import viewsets, mixins, generics
from collection import models, serializers from collection import models, serializers
from utils.views import BindObjectMixin from utils.views import BindObjectMixin
@ -14,7 +14,7 @@ class CollectionViewSet(mixins.ListModelMixin, viewsets.GenericViewSet):
serializer_class = serializers.CollectionBackOfficeSerializer serializer_class = serializers.CollectionBackOfficeSerializer
class GuideViewSet(viewsets.ModelViewSet): class GuideBaseView(generics.GenericAPIView):
"""ViewSet for Guide model.""" """ViewSet for Guide model."""
pagination_class = None pagination_class = None
queryset = models.Guide.objects.all() queryset = models.Guide.objects.all()
@ -22,6 +22,14 @@ class GuideViewSet(viewsets.ModelViewSet):
permission_classes = (permissions.IsAuthenticated,) 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, class CollectionBackOfficeViewSet(mixins.CreateModelMixin,
mixins.UpdateModelMixin, mixins.UpdateModelMixin,
mixins.DestroyModelMixin, mixins.DestroyModelMixin,
@ -54,5 +62,11 @@ class CollectionBackOfficeViewSet(mixins.CreateModelMixin,
collection.products.remove(related_object) collection.products.remove(related_object)
class GuideBackOfficeViewSet(GuideViewSet): class GuideListCreateView(GuideBaseView,
generics.ListCreateAPIView):
"""ViewSet for Guide model for BackOffice users.""" """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', 'is_main',
] ]
def get_request_kwargs(self): @property
def request_kwargs(self):
"""Get url kwargs from request.""" """Get url kwargs from request."""
return self.context.get('request').parser_context.get('kwargs') return self.context.get('request').parser_context.get('kwargs')
def validate(self, attrs): def validate(self, attrs):
"""Override validate method.""" """Override validate method."""
establishment_pk = self.get_request_kwargs().get('pk') establishment_pk = self.request_kwargs.get('pk')
establishment_slug = self.get_request_kwargs().get('slug') establishment_slug = self.request_kwargs.get('slug')
search_kwargs = {'pk': establishment_pk} if establishment_pk else {'slug': establishment_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) establishment_qs = models.Establishment.objects.filter(**search_kwargs)
image_qs = Image.objects.filter(id=image_id) image_qs = Image.objects.filter(id=image_id)

View File

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

View File

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

View File

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