dish create view
This commit is contained in:
parent
1876ca8c6d
commit
662a1427cd
|
|
@ -1334,6 +1334,10 @@ class Menu(GalleryMixin, TranslatedFieldsMixin, BaseAttributes):
|
||||||
(MAIN_COURSE, _('main_course')),
|
(MAIN_COURSE, _('main_course')),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
VALID_CARD_AND_WINES_CHOICES = (
|
||||||
|
STARTER, DESSERT, MAIN_COURSE
|
||||||
|
)
|
||||||
|
|
||||||
type = models.CharField(max_length=50, db_index=True, default=FORMULAS,
|
type = models.CharField(max_length=50, db_index=True, default=FORMULAS,
|
||||||
verbose_name=_('Menu type'), choices=MENU_CHOICES)
|
verbose_name=_('Menu type'), choices=MENU_CHOICES)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -830,12 +830,30 @@ class CardAndWinesPlatesSerializer(serializers.ModelSerializer):
|
||||||
fields = (
|
fields = (
|
||||||
'id',
|
'id',
|
||||||
'name_translated',
|
'name_translated',
|
||||||
|
'name',
|
||||||
'description_translated',
|
'description_translated',
|
||||||
|
'description',
|
||||||
'is_signature_plate',
|
'is_signature_plate',
|
||||||
'currency_code',
|
'currency_code',
|
||||||
'price',
|
'price',
|
||||||
'type',
|
'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):
|
class CardAndWinesSerializer(serializers.ModelSerializer):
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,7 @@ urlpatterns = [
|
||||||
path('menus/', views.MenuListCreateView.as_view(), name='menu-list'),
|
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('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/<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/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/<int:pk>', views.MenuUploadsRUDView.as_view(), name='menu-uploads-rud'),
|
||||||
path('menus/uploads/', views.MenuUploadsCreateView.as_view(), name='menu-uploads-create'),
|
path('menus/uploads/', views.MenuUploadsCreateView.as_view(), name='menu-uploads-create'),
|
||||||
|
|
|
||||||
|
|
@ -270,14 +270,28 @@ class EstablishmentWineView(generics.CreateAPIView):
|
||||||
return Response(serializer.data, status=status.HTTP_201_CREATED)
|
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):
|
class MenuUploadsCreateView(generics.CreateAPIView):
|
||||||
"""Menu uploads list view"""
|
"""Menu uploads list view"""
|
||||||
serializer_class = serializers.MenuFilesSerializers
|
serializer_class = serializers.MenuFilesSerializers
|
||||||
queryset = models.MenuFiles.objects.all()
|
queryset = models.MenuFiles.objects.all()
|
||||||
permission_classes = get_permission_classes(
|
# permission_classes = get_permission_classes(
|
||||||
IsEstablishmentManager,
|
# IsEstablishmentManager,
|
||||||
IsEstablishmentAdministrator,
|
# IsEstablishmentAdministrator,
|
||||||
)
|
# )
|
||||||
|
from rest_framework.permissions import AllowAny
|
||||||
|
permission_classes = (AllowAny, )
|
||||||
|
|
||||||
|
|
||||||
class SocialChoiceListCreateView(generics.ListCreateAPIView):
|
class SocialChoiceListCreateView(generics.ListCreateAPIView):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user