menu create
This commit is contained in:
parent
4d2d08a6f4
commit
22ee06403f
|
|
@ -727,7 +727,7 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
|
||||||
drinks_included = serializers.BooleanField(source='is_drinks_included')
|
drinks_included = serializers.BooleanField(source='is_drinks_included')
|
||||||
establishment_id = serializers.IntegerField(source='establishment.id')
|
establishment_id = serializers.IntegerField(source='establishment.id')
|
||||||
establishment_slug = serializers.CharField(source='establishment.slug', read_only=True)
|
establishment_slug = serializers.CharField(source='establishment.slug', read_only=True)
|
||||||
uploads = MenuFilesSerializers(many=True)
|
uploads = MenuFilesSerializers(many=True, read_only=True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = models.Menu
|
model = models.Menu
|
||||||
|
|
@ -742,9 +742,11 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
|
||||||
'lunch',
|
'lunch',
|
||||||
'last_update',
|
'last_update',
|
||||||
'uploads',
|
'uploads',
|
||||||
|
'uploads_ids',
|
||||||
]
|
]
|
||||||
extra_kwargs = {
|
extra_kwargs = {
|
||||||
'last_update': {'read_only': True}
|
'last_update': {'read_only': True},
|
||||||
|
'uploads_ids': {'write_only': True, 'source': 'uploads', 'required': True},
|
||||||
}
|
}
|
||||||
|
|
||||||
def validate(self, attrs):
|
def validate(self, attrs):
|
||||||
|
|
@ -753,8 +755,6 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def update(self, instance, validated_data):
|
def update(self, instance, validated_data):
|
||||||
uploaded_files_ids = validated_data.pop('uploads')
|
uploaded_files_ids = validated_data.pop('uploads')
|
||||||
if len(uploaded_files_ids):
|
|
||||||
uploaded_files_ids = list(models.MenuFiles.objects.filter(id__in=uploaded_files_ids))
|
|
||||||
establishment_kwargs = validated_data.pop('establishment')
|
establishment_kwargs = validated_data.pop('establishment')
|
||||||
establishment = get_object_or_404(models.Establishment, **establishment_kwargs)
|
establishment = get_object_or_404(models.Establishment, **establishment_kwargs)
|
||||||
validated_data['establishment'] = establishment
|
validated_data['establishment'] = establishment
|
||||||
|
|
@ -764,8 +764,6 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
|
||||||
|
|
||||||
def create(self, validated_data):
|
def create(self, validated_data):
|
||||||
uploaded_files_ids = validated_data.pop('uploads')
|
uploaded_files_ids = validated_data.pop('uploads')
|
||||||
if len(uploaded_files_ids):
|
|
||||||
uploaded_files_ids = list(models.MenuFiles.objects.filter(id__in=uploaded_files_ids))
|
|
||||||
establishment_kwargs = validated_data.pop('establishment')
|
establishment_kwargs = validated_data.pop('establishment')
|
||||||
establishment = get_object_or_404(models.Establishment, **establishment_kwargs)
|
establishment = get_object_or_404(models.Establishment, **establishment_kwargs)
|
||||||
validated_data['establishment'] = establishment
|
validated_data['establishment'] = establishment
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
"""Establishment app views."""
|
"""Establishment app views."""
|
||||||
from django.db.models.query_utils import Q
|
from django.db.models.query_utils import Q
|
||||||
|
from django.db import transaction
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.shortcuts import get_object_or_404
|
from django.shortcuts import get_object_or_404
|
||||||
from django_filters.rest_framework import DjangoFilterBackend
|
from django_filters.rest_framework import DjangoFilterBackend
|
||||||
|
|
@ -172,18 +173,19 @@ class MenuListCreateView(generics.ListCreateAPIView):
|
||||||
|
|
||||||
def create(self, request, *args, **kwargs):
|
def create(self, request, *args, **kwargs):
|
||||||
response_data = []
|
response_data = []
|
||||||
for menu in request.data:
|
with transaction.atomic():
|
||||||
if 'id' in menu:
|
for menu in request.data:
|
||||||
|
if 'id' in menu:
|
||||||
|
|
||||||
instance = get_object_or_404(Menu, pk=menu['id'])
|
instance = get_object_or_404(Menu, pk=menu['id'])
|
||||||
serializer = self.get_serializer(instance, data=menu)
|
serializer = self.get_serializer(instance, data=menu)
|
||||||
else:
|
else:
|
||||||
|
|
||||||
serializer = self.get_serializer(data=menu)
|
serializer = self.get_serializer(data=menu)
|
||||||
|
|
||||||
serializer.is_valid(raise_exception=True)
|
serializer.is_valid(raise_exception=True)
|
||||||
serializer.save()
|
serializer.save()
|
||||||
response_data.append(serializer.data)
|
response_data.append(serializer.data)
|
||||||
|
|
||||||
return Response(response_data, status=status.HTTP_201_CREATED)
|
return Response(response_data, status=status.HTTP_201_CREATED)
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user