Пример #1
0
    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)
Пример #2
0
    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)