card_and_wines get method

This commit is contained in:
Kuroshini 2020-01-31 21:19:16 +03:00
parent f67c8b08a5
commit a9ad3ef7e7
3 changed files with 75 additions and 6 deletions

View File

@ -793,3 +793,57 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
instance = models.Menu.objects.create(**validated_data)
instance.uploads.set(uploaded_files_ids)
return instance
class EstablishmentBackOfficeWineSerializer(serializers.ModelSerializer):
"""BackOffice wine serializer"""
class Meta:
model = models.EstablishmentBackOfficeWine
fields = (
'id',
'bottles',
'price_from',
'price_to',
'price_from_for_one',
'price_to_for_one',
'is_glass',
)
class CardAndWinesPlatesSerializer(serializers.ModelSerializer):
"""Serializer for card&wines backoffice section"""
name_translated = TranslatedField(read_only=True)
description_translated = TranslatedField(read_only=True)
class Meta:
model = models.Plate
fields = (
'id',
'name_translated',
'description_translated',
'is_signature_plate',
'currency_code',
'price',
)
class CardAndWinesSerializer(serializers.ModelSerializer):
"""View to show menus(not formulas) with dishes for certain establishment"""
wine = EstablishmentBackOfficeWineSerializer(allow_null=True, read_only=True, source='back_office_wine')
dishes = serializers.SerializerMethodField(read_only=True)
class Meta:
model = models.Establishment
fields = (
'wine',
'dishes',
)
def get_dishes(self, obj):
result = []
for menu in obj.menu_set.exclude(type=models.Menu.FORMULAS):
for plate in menu.plates.all():
result.append(CardAndWinesPlatesSerializer(plate).data)
return result

View File

@ -38,6 +38,7 @@ urlpatterns = [
path('menus/dishes/<int:pk>/gallery/<int:image_id>/', views.MenuGalleryCreateDestroyView.as_view(),
name='menu-dishes-gallery-create-destroy'),
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
path('card_and_wines/<int:establishment_id>', views.CardAndWinesListView.as_view(), name='card-and-wines-get'),
path('menus/<int:pk>/', views.MenuRUDView.as_view(), name='menu-rud'),
path('menus/uploads/<int:pk>', views.MenuUploadsRUDView.as_view(), name='menu-uploads-rud'),
path('menus/uploads/', views.MenuUploadsCreateView.as_view(), name='menu-uploads-create'),

View File

@ -157,16 +157,30 @@ class EstablishmentScheduleCreateView(generics.CreateAPIView):
)
class CardAndWinesListView(generics.RetrieveAPIView):
# permission_classes = get_permission_classes(
# IsEstablishmentManager,
# IsEstablishmentAdministrator,
# )
serializer_class = serializers.CardAndWinesSerializer
queryset = models.Establishment.objects.with_base_related()
from rest_framework.permissions import AllowAny
permission_classes = (AllowAny, )
def get_object(self):
return get_object_or_404(models.Establishment, pk=self.kwargs['establishment_id'])
class MenuListCreateView(generics.ListCreateAPIView):
"""Menu list create view. This view works only with menu formulas type"""
serializer_class = serializers.MenuBackOfficeSerializer
queryset = models.Menu.objects.with_base_related().by_type(menu_type=models.Menu.FORMULAS)
permission_classes = get_permission_classes(
IsEstablishmentManager,
IsEstablishmentAdministrator,
)
# from rest_framework.permissions import AllowAny
# permission_classes = (AllowAny, )
# permission_classes = get_permission_classes(
# IsEstablishmentManager,
# IsEstablishmentAdministrator,
# )
from rest_framework.permissions import AllowAny
permission_classes = (AllowAny, )
filter_backends = (DjangoFilterBackend,)
filterset_fields = (