def post(self, request, *args, **kwargs): form = SyncOrdersDataForm(request.data) if not form.is_valid(): return Response({'Detail': form.errors}, status=status.HTTP_400_BAD_REQUEST) cld = form.cleaned_data is_valid, error_message = self.is_request_data_valid(**cld) if not is_valid: return Response({'Detail': error_message}, status=status.HTTP_400_BAD_REQUEST) orders_data = self.get_perfect_orders_data(cld['orders_data']) for item in orders_data: object_data = Orders.make_orders_by_dishes_ids( request, dishes_ids=item['dishes_ids'], created=item['created']) if isinstance(object_data, Exception): return Response({'Detail': object_data.args}, status=status.HTTP_400_BAD_REQUEST) serializer = OrdersSerializer(data=object_data) if not serializer.is_valid(): return Response({'Detail': serializer.errors}, status=status.HTTP_400_BAD_REQUEST) validated_data = { 'payment_status': ORDERS_PAYMENT_STATUS['paid'], 'payment_mode': ORDERS_PAYMENT_MODE['cash'] } try: instance = serializer.save() serializer.update_payment_status(instance, validated_data) except Exception as e: return Response({'Detail': e.args}, status=status.HTTP_400_BAD_REQUEST) return Response({'Result': True}, status=status.HTTP_201_CREATED)
def post(self, request, *args, **kwargs): """ :param request: :param args: :param kwargs: {'dishes_ids': [{'dishes_id': '', 'count': '', }, ... ], } :return: """ form = OrdersInputForm(request.data) if not form.is_valid(): return Response(form.errors, status=status.HTTP_400_BAD_REQUEST) cld = form.cleaned_data stream = BytesIO(cld['dishes_ids']) dishes_ids = JSONParser().parse(stream) object_data = Orders.make_orders_by_dishes_ids(request, dishes_ids=dishes_ids) if isinstance(object_data, Exception): return Response({'Detail': object_data.args}, status=status.HTTP_400_BAD_REQUEST) serializer = OrdersSerializer(data=object_data) if serializer.is_valid(): serializer.save() orders_detail = self.get_orders_detail(serializer.instance) res_serializer = OrdersDetailSerializer(data=orders_detail) if not res_serializer.is_valid(): return Response({'Detail': res_serializer.errors}, status=status.HTTP_400_BAD_REQUEST) return Response(res_serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)