added product RUD-endpoints for back-office
This commit is contained in:
parent
8dc966b185
commit
83a3444c95
|
|
@ -7,5 +7,4 @@ app_name = 'collection'
|
|||
|
||||
urlpatterns = [
|
||||
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 product import models
|
||||
from product.serializers import ProductDetailSerializer
|
||||
from gallery.models import Image
|
||||
|
||||
|
||||
|
|
@ -42,3 +43,28 @@ class ProductBackOfficeGallerySerializer(serializers.ModelSerializer):
|
|||
attrs['image'] = image
|
||||
|
||||
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):
|
||||
"""Product base serializer."""
|
||||
product_type = serializers.CharField(source='product_type_translated_name')
|
||||
subtypes = ProductSubTypeBaseSerializer(many=True)
|
||||
establishment = EstablishmentShortSerializer()
|
||||
tags = TagBaseSerializer(source='related_tags', many=True)
|
||||
preview_image_url = serializers.URLField(source='preview_main_image_url', allow_null=True)
|
||||
product_type = serializers.CharField(source='product_type_translated_name', read_only=True)
|
||||
subtypes = ProductSubTypeBaseSerializer(many=True, read_only=True)
|
||||
establishment_detail = EstablishmentShortSerializer(source='establishment', read_only=True)
|
||||
tags = TagBaseSerializer(source='related_tags', many=True, read_only=True)
|
||||
preview_image_url = serializers.URLField(source='preview_main_image_url',
|
||||
allow_null=True,
|
||||
read_only=True)
|
||||
|
||||
class Meta:
|
||||
"""Meta class."""
|
||||
|
|
@ -88,7 +90,7 @@ class ProductBaseSerializer(serializers.ModelSerializer):
|
|||
'product_type',
|
||||
'subtypes',
|
||||
'public_mark',
|
||||
'establishment',
|
||||
'establishment_detail',
|
||||
'vintage',
|
||||
'tags',
|
||||
'preview_image_url',
|
||||
|
|
@ -98,17 +100,18 @@ class ProductBaseSerializer(serializers.ModelSerializer):
|
|||
class ProductDetailSerializer(ProductBaseSerializer):
|
||||
"""Product detail serializer."""
|
||||
description_translated = TranslatedField()
|
||||
review = ReviewShortSerializer(source='last_published_review')
|
||||
awards = AwardSerializer(many=True)
|
||||
establishment = EstablishmentProductSerializer()
|
||||
classifications = ProductClassificationBaseSerializer(many=True)
|
||||
standards = ProductStandardBaseSerializer(many=True)
|
||||
wine_region = WineRegionBaseSerializer()
|
||||
wine_sub_region = WineSubRegionBaseSerializer()
|
||||
wine_colors = TagBaseSerializer(many=True)
|
||||
bottles_produced = TagBaseSerializer(many=True)
|
||||
sugar_contents = TagBaseSerializer(many=True)
|
||||
image_url = serializers.ImageField(source='main_image_url', allow_null=True)
|
||||
review = ReviewShortSerializer(source='last_published_review', read_only=True)
|
||||
awards = AwardSerializer(many=True, read_only=True)
|
||||
classifications = ProductClassificationBaseSerializer(many=True, read_only=True)
|
||||
standards = ProductStandardBaseSerializer(many=True, read_only=True)
|
||||
wine_region = WineRegionBaseSerializer(read_only=True)
|
||||
wine_sub_region = WineSubRegionBaseSerializer(read_only=True)
|
||||
wine_colors = TagBaseSerializer(many=True, read_only=True)
|
||||
bottles_produced = TagBaseSerializer(many=True, read_only=True)
|
||||
sugar_contents = TagBaseSerializer(many=True, read_only=True)
|
||||
image_url = serializers.ImageField(source='main_image_url',
|
||||
allow_null=True,
|
||||
read_only=True)
|
||||
|
||||
class Meta(ProductBaseSerializer.Meta):
|
||||
fields = ProductBaseSerializer.Meta.fields + [
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@ from product.urls.common import urlpatterns as common_urlpatterns
|
|||
from product import views
|
||||
|
||||
urlpatterns = [
|
||||
path('<int:pk>/', views.ProductDetailBackOfficeView.as_view(), name='rud'),
|
||||
path('<int:pk>/gallery/', views.ProductBackOfficeGalleryListView.as_view(),
|
||||
name='gallery-list'),
|
||||
path('<int:pk>/gallery/<int:image_id>/', views.ProductBackOfficeGalleryCreateDestroyView.as_view(),
|
||||
|
|
|
|||
|
|
@ -73,3 +73,8 @@ class ProductBackOfficeGalleryListView(ProductBackOfficeMixinView, generics.List
|
|||
def get_queryset(self):
|
||||
"""Override get_queryset method."""
|
||||
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