menu create

This commit is contained in:
Kuroshini 2020-01-31 01:04:39 +03:00
parent 4d2d08a6f4
commit 22ee06403f
2 changed files with 15 additions and 15 deletions

View File

@ -727,7 +727,7 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
drinks_included = serializers.BooleanField(source='is_drinks_included')
establishment_id = serializers.IntegerField(source='establishment.id')
establishment_slug = serializers.CharField(source='establishment.slug', read_only=True)
uploads = MenuFilesSerializers(many=True)
uploads = MenuFilesSerializers(many=True, read_only=True)
class Meta:
model = models.Menu
@ -742,9 +742,11 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
'lunch',
'last_update',
'uploads',
'uploads_ids',
]
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):
@ -753,8 +755,6 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
def update(self, instance, validated_data):
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 = get_object_or_404(models.Establishment, **establishment_kwargs)
validated_data['establishment'] = establishment
@ -764,8 +764,6 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
def create(self, validated_data):
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 = get_object_or_404(models.Establishment, **establishment_kwargs)
validated_data['establishment'] = establishment

View File

@ -1,5 +1,6 @@
"""Establishment app views."""
from django.db.models.query_utils import Q
from django.db import transaction
from django.http import Http404
from django.shortcuts import get_object_or_404
from django_filters.rest_framework import DjangoFilterBackend
@ -172,18 +173,19 @@ class MenuListCreateView(generics.ListCreateAPIView):
def create(self, request, *args, **kwargs):
response_data = []
for menu in request.data:
if 'id' in menu:
with transaction.atomic():
for menu in request.data:
if 'id' in menu:
instance = get_object_or_404(Menu, pk=menu['id'])
serializer = self.get_serializer(instance, data=menu)
else:
instance = get_object_or_404(Menu, pk=menu['id'])
serializer = self.get_serializer(instance, data=menu)
else:
serializer = self.get_serializer(data=menu)
serializer = self.get_serializer(data=menu)
serializer.is_valid(raise_exception=True)
serializer.save()
response_data.append(serializer.data)
serializer.is_valid(raise_exception=True)
serializer.save()
response_data.append(serializer.data)
return Response(response_data, status=status.HTTP_201_CREATED)