From 8b56f9e65b00a88aca3a20bc86a7bd66d92d4c1b Mon Sep 17 00:00:00 2001 From: behruz-dev Date: Tue, 2 Dec 2025 16:22:26 +0500 Subject: [PATCH] order update viewset change qilindi --- core/apps/dashboard/serializers/order.py | 4 ++-- core/apps/dashboard/views/order.py | 15 ++++++++------- core/apps/orders/serializers/order_item.py | 20 +++++++++++++++++--- 3 files changed, 27 insertions(+), 12 deletions(-) diff --git a/core/apps/dashboard/serializers/order.py b/core/apps/dashboard/serializers/order.py index 2d6bbc7..f28a6f5 100644 --- a/core/apps/dashboard/serializers/order.py +++ b/core/apps/dashboard/serializers/order.py @@ -7,7 +7,7 @@ from rest_framework import serializers # orders from core.apps.orders.models import Order, OrderItem -from core.apps.orders.serializers.order_item import OrderItemSerializer +from core.apps.orders.serializers.order_item import OrderItemSerializer, OrderUpdateItemSerializer # shared from core.apps.shared.models import Factory # accounts @@ -104,7 +104,7 @@ class AdminOrderUpdateSerializer(serializers.Serializer): advance = serializers.FloatField() employee_name = serializers.CharField() user_id = serializers.IntegerField() - items = OrderItemSerializer(many=True) + items = OrderUpdateItemSerializer(many=True) def validate(self, data): user = User.objects.filter(id=data['user_id']).first() diff --git a/core/apps/dashboard/views/order.py b/core/apps/dashboard/views/order.py index f436394..8214855 100644 --- a/core/apps/dashboard/views/order.py +++ b/core/apps/dashboard/views/order.py @@ -22,12 +22,13 @@ class OrderViewSet(viewsets.GenericViewSet, ResponseMixin): queryset = Order.objects.all() def get_serializer_class(self): - if self.action == "post": - return serializers.AdminOrderCreateSerializer - elif self.action in ("patch", "put"): - return serializers.AdminOrderUpdateSerializer - else: - return serializers.AdminOrderListSerializer + match self.action: + case "post": + return serializers.AdminOrderCreateSerializer + case "update_": + return serializers.AdminOrderUpdateSerializer + case _: + return serializers.AdminOrderListSerializer @swagger_auto_schema( tags=['Admin Orders'], @@ -82,7 +83,7 @@ class OrderViewSet(viewsets.GenericViewSet, ResponseMixin): tags=['Admin Orders'] ) @action(detail=True, methods=['patch'], url_path='update') - def update_doctor(self, request, pk=None): + def update_(self, request, pk=None): try: order = Order.objects.filter(id=pk).first() if not order: diff --git a/core/apps/orders/serializers/order_item.py b/core/apps/orders/serializers/order_item.py index b78e671..52a8c4d 100644 --- a/core/apps/orders/serializers/order_item.py +++ b/core/apps/orders/serializers/order_item.py @@ -5,8 +5,7 @@ from django.db import transaction from rest_framework import serializers # orders -from core.apps.orders.models import OrderItem - +from core.apps.orders.models import OrderItem, Product class OrderItemSerializer(serializers.ModelSerializer): @@ -14,4 +13,19 @@ class OrderItemSerializer(serializers.ModelSerializer): model = OrderItem fields = [ 'id', 'product', 'quantity', 'total_price' - ] \ No newline at end of file + ] + + + +class OrderUpdateItemSerializer(serializers.Serializer): + product_id = serializers.IntegerField() + quantity = serializers.IntegerField() + total_price = serializers.DecimalField(max_digits=15, decimal_places=2) + + def validate(self, attrs): + product = Product.objects.filter(id=attrs['product_id']).first() + if not product: + raise serializers.ValidationError({"product": "Product not found"}) + attrs['product'] = product + return attrs +