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')),
|
||||
)
|
||||
|
||||
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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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'),
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user