added product RUD-endpoints for back-office
This commit is contained in:
parent
8dc966b185
commit
83a3444c95
|
|
@ -7,5 +7,4 @@ app_name = 'collection'
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('', views.CollectionListCreateView.as_view(), name='list-create'),
|
path('', views.CollectionListCreateView.as_view(), name='list-create'),
|
||||||
|
]
|
||||||
]
|
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@ from django.utils.translation import gettext_lazy as _
|
||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
from product import models
|
from product import models
|
||||||
|
from product.serializers import ProductDetailSerializer
|
||||||
from gallery.models import Image
|
from gallery.models import Image
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -42,3 +43,28 @@ class ProductBackOfficeGallerySerializer(serializers.ModelSerializer):
|
||||||
attrs['image'] = image
|
attrs['image'] = image
|
||||||
|
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
|
|
||||||
|
class ProductBackOfficeDetailSerializer(ProductDetailSerializer):
|
||||||
|
|
||||||
|
class Meta(ProductDetailSerializer.Meta):
|
||||||
|
fields = ProductDetailSerializer.Meta.fields + [
|
||||||
|
'description',
|
||||||
|
'available',
|
||||||
|
'product_type',
|
||||||
|
'establishment',
|
||||||
|
'wine_region',
|
||||||
|
'wine_sub_region',
|
||||||
|
'wine_village',
|
||||||
|
'state',
|
||||||
|
]
|
||||||
|
extra_kwargs = {
|
||||||
|
'description': {'write_only': True},
|
||||||
|
'available': {'write_only': True},
|
||||||
|
'product_type': {'write_only': True},
|
||||||
|
'establishment': {'write_only': True},
|
||||||
|
'wine_region': {'write_only': True},
|
||||||
|
'wine_sub_region': {'write_only': True},
|
||||||
|
'wine_village': {'write_only': True},
|
||||||
|
'state': {'write_only': True},
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -72,11 +72,13 @@ class ProductStandardBaseSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
class ProductBaseSerializer(serializers.ModelSerializer):
|
class ProductBaseSerializer(serializers.ModelSerializer):
|
||||||
"""Product base serializer."""
|
"""Product base serializer."""
|
||||||
product_type = serializers.CharField(source='product_type_translated_name')
|
product_type = serializers.CharField(source='product_type_translated_name', read_only=True)
|
||||||
subtypes = ProductSubTypeBaseSerializer(many=True)
|
subtypes = ProductSubTypeBaseSerializer(many=True, read_only=True)
|
||||||
establishment = EstablishmentShortSerializer()
|
establishment_detail = EstablishmentShortSerializer(source='establishment', read_only=True)
|
||||||
tags = TagBaseSerializer(source='related_tags', many=True)
|
tags = TagBaseSerializer(source='related_tags', many=True, read_only=True)
|
||||||
preview_image_url = serializers.URLField(source='preview_main_image_url', allow_null=True)
|
preview_image_url = serializers.URLField(source='preview_main_image_url',
|
||||||
|
allow_null=True,
|
||||||
|
read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
"""Meta class."""
|
"""Meta class."""
|
||||||
|
|
@ -88,7 +90,7 @@ class ProductBaseSerializer(serializers.ModelSerializer):
|
||||||
'product_type',
|
'product_type',
|
||||||
'subtypes',
|
'subtypes',
|
||||||
'public_mark',
|
'public_mark',
|
||||||
'establishment',
|
'establishment_detail',
|
||||||
'vintage',
|
'vintage',
|
||||||
'tags',
|
'tags',
|
||||||
'preview_image_url',
|
'preview_image_url',
|
||||||
|
|
@ -98,17 +100,18 @@ class ProductBaseSerializer(serializers.ModelSerializer):
|
||||||
class ProductDetailSerializer(ProductBaseSerializer):
|
class ProductDetailSerializer(ProductBaseSerializer):
|
||||||
"""Product detail serializer."""
|
"""Product detail serializer."""
|
||||||
description_translated = TranslatedField()
|
description_translated = TranslatedField()
|
||||||
review = ReviewShortSerializer(source='last_published_review')
|
review = ReviewShortSerializer(source='last_published_review', read_only=True)
|
||||||
awards = AwardSerializer(many=True)
|
awards = AwardSerializer(many=True, read_only=True)
|
||||||
establishment = EstablishmentProductSerializer()
|
classifications = ProductClassificationBaseSerializer(many=True, read_only=True)
|
||||||
classifications = ProductClassificationBaseSerializer(many=True)
|
standards = ProductStandardBaseSerializer(many=True, read_only=True)
|
||||||
standards = ProductStandardBaseSerializer(many=True)
|
wine_region = WineRegionBaseSerializer(read_only=True)
|
||||||
wine_region = WineRegionBaseSerializer()
|
wine_sub_region = WineSubRegionBaseSerializer(read_only=True)
|
||||||
wine_sub_region = WineSubRegionBaseSerializer()
|
wine_colors = TagBaseSerializer(many=True, read_only=True)
|
||||||
wine_colors = TagBaseSerializer(many=True)
|
bottles_produced = TagBaseSerializer(many=True, read_only=True)
|
||||||
bottles_produced = TagBaseSerializer(many=True)
|
sugar_contents = TagBaseSerializer(many=True, read_only=True)
|
||||||
sugar_contents = TagBaseSerializer(many=True)
|
image_url = serializers.ImageField(source='main_image_url',
|
||||||
image_url = serializers.ImageField(source='main_image_url', allow_null=True)
|
allow_null=True,
|
||||||
|
read_only=True)
|
||||||
|
|
||||||
class Meta(ProductBaseSerializer.Meta):
|
class Meta(ProductBaseSerializer.Meta):
|
||||||
fields = ProductBaseSerializer.Meta.fields + [
|
fields = ProductBaseSerializer.Meta.fields + [
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ from product.urls.common import urlpatterns as common_urlpatterns
|
||||||
from product import views
|
from product import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
|
path('<int:pk>/', views.ProductDetailBackOfficeView.as_view(), name='rud'),
|
||||||
path('<int:pk>/gallery/', views.ProductBackOfficeGalleryListView.as_view(),
|
path('<int:pk>/gallery/', views.ProductBackOfficeGalleryListView.as_view(),
|
||||||
name='gallery-list'),
|
name='gallery-list'),
|
||||||
path('<int:pk>/gallery/<int:image_id>/', views.ProductBackOfficeGalleryCreateDestroyView.as_view(),
|
path('<int:pk>/gallery/<int:image_id>/', views.ProductBackOfficeGalleryCreateDestroyView.as_view(),
|
||||||
|
|
|
||||||
|
|
@ -73,3 +73,8 @@ class ProductBackOfficeGalleryListView(ProductBackOfficeMixinView, generics.List
|
||||||
def get_queryset(self):
|
def get_queryset(self):
|
||||||
"""Override get_queryset method."""
|
"""Override get_queryset method."""
|
||||||
return self.get_object().gallery.all()
|
return self.get_object().gallery.all()
|
||||||
|
|
||||||
|
|
||||||
|
class ProductDetailBackOfficeView(ProductBackOfficeMixinView, generics.RetrieveUpdateDestroyAPIView):
|
||||||
|
"""Product back-office R/U/D view."""
|
||||||
|
serializer_class = serializers.ProductBackOfficeDetailSerializer
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user