order update viewset change qilindi
This commit is contained in:
@@ -7,7 +7,7 @@ from rest_framework import serializers
|
|||||||
|
|
||||||
# orders
|
# orders
|
||||||
from core.apps.orders.models import Order, OrderItem
|
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
|
# shared
|
||||||
from core.apps.shared.models import Factory
|
from core.apps.shared.models import Factory
|
||||||
# accounts
|
# accounts
|
||||||
@@ -104,7 +104,7 @@ class AdminOrderUpdateSerializer(serializers.Serializer):
|
|||||||
advance = serializers.FloatField()
|
advance = serializers.FloatField()
|
||||||
employee_name = serializers.CharField()
|
employee_name = serializers.CharField()
|
||||||
user_id = serializers.IntegerField()
|
user_id = serializers.IntegerField()
|
||||||
items = OrderItemSerializer(many=True)
|
items = OrderUpdateItemSerializer(many=True)
|
||||||
|
|
||||||
def validate(self, data):
|
def validate(self, data):
|
||||||
user = User.objects.filter(id=data['user_id']).first()
|
user = User.objects.filter(id=data['user_id']).first()
|
||||||
|
|||||||
@@ -22,12 +22,13 @@ class OrderViewSet(viewsets.GenericViewSet, ResponseMixin):
|
|||||||
queryset = Order.objects.all()
|
queryset = Order.objects.all()
|
||||||
|
|
||||||
def get_serializer_class(self):
|
def get_serializer_class(self):
|
||||||
if self.action == "post":
|
match self.action:
|
||||||
return serializers.AdminOrderCreateSerializer
|
case "post":
|
||||||
elif self.action in ("patch", "put"):
|
return serializers.AdminOrderCreateSerializer
|
||||||
return serializers.AdminOrderUpdateSerializer
|
case "update_":
|
||||||
else:
|
return serializers.AdminOrderUpdateSerializer
|
||||||
return serializers.AdminOrderListSerializer
|
case _:
|
||||||
|
return serializers.AdminOrderListSerializer
|
||||||
|
|
||||||
@swagger_auto_schema(
|
@swagger_auto_schema(
|
||||||
tags=['Admin Orders'],
|
tags=['Admin Orders'],
|
||||||
@@ -82,7 +83,7 @@ class OrderViewSet(viewsets.GenericViewSet, ResponseMixin):
|
|||||||
tags=['Admin Orders']
|
tags=['Admin Orders']
|
||||||
)
|
)
|
||||||
@action(detail=True, methods=['patch'], url_path='update')
|
@action(detail=True, methods=['patch'], url_path='update')
|
||||||
def update_doctor(self, request, pk=None):
|
def update_(self, request, pk=None):
|
||||||
try:
|
try:
|
||||||
order = Order.objects.filter(id=pk).first()
|
order = Order.objects.filter(id=pk).first()
|
||||||
if not order:
|
if not order:
|
||||||
|
|||||||
@@ -5,8 +5,7 @@ from django.db import transaction
|
|||||||
from rest_framework import serializers
|
from rest_framework import serializers
|
||||||
|
|
||||||
# orders
|
# orders
|
||||||
from core.apps.orders.models import OrderItem
|
from core.apps.orders.models import OrderItem, Product
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class OrderItemSerializer(serializers.ModelSerializer):
|
class OrderItemSerializer(serializers.ModelSerializer):
|
||||||
@@ -15,3 +14,18 @@ class OrderItemSerializer(serializers.ModelSerializer):
|
|||||||
fields = [
|
fields = [
|
||||||
'id', 'product', 'quantity', 'total_price'
|
'id', 'product', 'quantity', 'total_price'
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user