update order list serializer add get order view and its permission

This commit is contained in:
Parsa Nazer
2025-03-17 16:15:38 +03:30
parent b29e0a4958
commit f9a339b039
8 changed files with 124 additions and 27 deletions
+31 -6
View File
@@ -78,21 +78,17 @@ class CartSerializer(serializers.ModelSerializer):
return None
def get_tax(self, obj):
return f'{1000:,.0f} تومان'
def get_cart_total(self, obj):
return f'{10000:,.0f} تومان'
def get_final_price(self, obj):
def get_final_price(self, obj):
return f'{8000:,.0f} تومان'
class OrderSerializer(serializers.ModelSerializer):
class OrderListSerializer(serializers.ModelSerializer):
count = serializers.SerializerMethodField()
images = serializers.SerializerMethodField()
order_id = serializers.SerializerMethodField()
@@ -100,6 +96,35 @@ class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = OrderModel
fields = ['created_at', 'status', "images", "count", "id", 'final_price', 'order_id', 'verbose_status']
read_only_fields = ['count', 'images', 'order_id', 'verbose_status']
def get_verbose_status(self, obj):
return obj.get_status_display()
def get_count(self, obj):
return obj.items.all().count()
def get_images(self, obj):
image_list = [
self.context.get('request').build_absolute_uri(image.image.url)
if (image := item.product.images.all().first()) else None
for item in obj.items.all()[:3]
]
return filter(lambda x: x is not None, image_list)
def get_order_id(self, obj):
return obj.id + 1000
class OrderGetSerializer(serializers.ModelSerializer):
count = serializers.SerializerMethodField()
images = serializers.SerializerMethodField()
order_id = serializers.SerializerMethodField()
verbose_status = serializers.SerializerMethodField()
items = OrderItemSerailzier(many=True)
address = UserAddressSerializer()
discount_code = DiscountCodeSerializer()
class Meta:
model = OrderModel
fields = ['created_at', 'status', "images", "count", "id", 'final_price', 'order_id', 'verbose_status', 'address', 'items', 'tax' , 'cart_total', 'discount_code', 'discount']
def get_verbose_status(self, obj):
return obj.get_status_display()