create and update

This commit is contained in:
Kuroshini 2020-01-30 23:51:24 +03:00
parent 39cdd18392
commit ae9d505e3d
2 changed files with 42 additions and 3 deletions

View File

@ -717,10 +717,10 @@ class MenuFilesSerializers(ProjectModelSerializer):
class MenuBackOfficeSerializer(serializers.ModelSerializer):
name = serializers.CharField(read_only=True, source='category_translated')
name = serializers.CharField(source='category_translated')
drinks_included = serializers.BooleanField(source='is_drinks_included')
establishment_id = serializers.IntegerField(source='establishment.id')
establishment_slug = serializers.CharField(source='establishment.slug')
establishment_slug = serializers.CharField(source='establishment.slug', read_only=True)
uploads = MenuFilesSerializers(many=True)
class Meta:
@ -740,3 +740,25 @@ class MenuBackOfficeSerializer(serializers.ModelSerializer):
extra_kwargs = {
'last_update': {'read_only': True}
}
def validate(self, attrs):
attrs['category'] = {'en-GB': attrs.pop('category_translated')}
return attrs
def update(self, instance, validated_data):
uploaded_files_ids = validated_data.pop('uploads')
establishment_kwargs = validated_data.pop('establishment')
establishment = get_object_or_404(models.Establishment, **establishment_kwargs)
validated_data['establishment'] = establishment
instance = super().update(instance, validated_data)
instance.uploads.set(uploaded_files_ids)
return instance
def create(self, validated_data):
uploaded_files_ids = validated_data.pop('uploads')
establishment_kwargs = validated_data.pop('establishment')
establishment = get_object_or_404(models.Establishment, **establishment_kwargs)
validated_data['establishment'] = establishment
instance = models.Menu.objects.create(**validated_data)
instance.uploads.set(uploaded_files_ids)
return instance

View File

@ -8,7 +8,7 @@ from rest_framework.response import Response
from account.models import User
from establishment import filters, models, serializers
from establishment.models import EstablishmentEmployee
from establishment.models import EstablishmentEmployee, Menu
from timetable.models import Timetable
from timetable.serialziers import ScheduleCreateSerializer, ScheduleRUDSerializer
from utils.methods import get_permission_classes
@ -172,6 +172,23 @@ class MenuListCreateView(generics.ListCreateAPIView):
'establishment__slug',
)
def create(self, request, *args, **kwargs):
response_data = []
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:
serializer = self.get_serializer(data=menu)
serializer.is_valid(raise_exception=True)
serializer.save()
response_data.append(serializer.data)
return Response(response_data, status=status.HTTP_201_CREATED)
class MenuRUDView(generics.RetrieveUpdateDestroyAPIView):
"""Menu RUD view."""