dish create view

This commit is contained in:
Kuroshini 2020-02-01 15:34:45 +03:00
parent 1876ca8c6d
commit 662a1427cd
4 changed files with 41 additions and 4 deletions

View File

@ -1334,6 +1334,10 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
(MAIN_COURSE, _('main_course')),
)
VALID_CARD_AND_WINES_CHOICES = (
STARTER, DESSERT, MAIN_COURSE
)
type = models.CharField(max_length=50, db_index=True, default=FORMULAS,
verbose_name=_('Menu type'), choices=MENU_CHOICES)

View File

@ -830,12 +830,30 @@ class CardAndWinesPlatesSerializer(serializers.ModelSerializer):
fields = (
'id',
'name_translated',
'name',
'description_translated',
'description',
'is_signature_plate',
'currency_code',
'price',
'type',
)
extra_kwargs = {
'name': {'write_only': True},
'description': {'write_only': True},
}
def create(self, validated_data):
establishment = get_object_or_404(models.Establishment, pk=self.context['view'].kwargs['establishment_id'])
menu_type = validated_data.pop('menu')['type']
if menu_type not in models.Menu.VALID_CARD_AND_WINES_CHOICES:
raise serializers.ValidationError({'detail': f'incorrect type: {menu_type}'})
menu_to_bind = establishment.menu_set.filter(type=menu_type).first()
if menu_to_bind is None:
menu_to_bind = models.Menu.objects.create(type=menu_type, category={'en-GB': menu_type},
establishment=establishment)
validated_data.update({'menu': menu_to_bind})
return super().create(validated_data)
class CardAndWinesSerializer(serializers.ModelSerializer):

View File

@ -40,6 +40,7 @@ urlpatterns = [
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/dish/<int:establishment_id>/', views.DishCreateView.as_view(), name='create-dish'),
path('menus/wine/<int:establishment_id>/', views.EstablishmentWineView.as_view(), name='menu-wine'),
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

@ -270,14 +270,28 @@ class EstablishmentWineView(generics.CreateAPIView):
return Response(serializer.data, status=status.HTTP_201_CREATED)
class DishCreateView(generics.CreateAPIView):
"""View for creating and binding dish to establishment"""
serializer_class = serializers.CardAndWinesPlatesSerializer
queryset = models.Plate.objects.all()
# permission_classes = get_permission_classes(
# IsEstablishmentManager,
# IsEstablishmentAdministrator,
# )
from rest_framework.permissions import AllowAny
permission_classes = (AllowAny, )
class MenuUploadsCreateView(generics.CreateAPIView):
"""Menu uploads list view"""
serializer_class = serializers.MenuFilesSerializers
queryset = models.MenuFiles.objects.all()
permission_classes = get_permission_classes(
IsEstablishmentManager,
IsEstablishmentAdministrator,
)
# permission_classes = get_permission_classes(
# IsEstablishmentManager,
# IsEstablishmentAdministrator,
# )
from rest_framework.permissions import AllowAny
permission_classes = (AllowAny, )
class SocialChoiceListCreateView(generics.ListCreateAPIView):