create and update
This commit is contained in:
parent
39cdd18392
commit
ae9d505e3d
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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."""
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user