product refactor bullshit

This commit is contained in:
Parsa Nazer
2025-02-08 17:37:57 +03:30
parent ef2d35b2ed
commit 31782bf743
8 changed files with 200 additions and 63 deletions
+29 -11
View File
@@ -19,10 +19,32 @@ class ProductDetailSerializer(serializers.ModelSerializer):
exclude = ('product',)
class AttributeTypeSerialzier(serializers.ModelSerializer):
class Meta:
model = AttributeType
fields = "__all__"
class AttributeValueSerialzier(serializers.ModelSerializer):
attribute_type = AttributeTypeSerialzier()
class Meta:
model = AttributeValue
fields = "__all__"
class ProductVariantSerialzier(serializers.ModelSerializer):
attributes = AttributeValueSerialzier(many=True)
price = serializers.SerializerMethodField()
class Meta:
model = ProductVariant
fields = "__all__"
def get_price(self, obj):
dollor_price = self.context.get('dollor_price')
toman_price = obj.get_toman_price(dollor_price=dollor_price)
return "{:,.0f} تومان".format(toman_price)
class DynamicProductSerializer(serializers.ModelSerializer):
price = serializers.SerializerMethodField()
variants = ProductVariantSerialzier(many=True)
is_new = serializers.SerializerMethodField()
related_products = serializers.SerializerMethodField()
details = ProductDetailSerializer(many=True, read_only=True)
@@ -42,15 +64,11 @@ class DynamicProductSerializer(serializers.ModelSerializer):
model = ProductModel
fields = "__all__"
view_type = {
'list': ['name', 'price', 'image1', 'video', 'rating', 'discount', 'slug', 'category', ],
'instance': ['name', 'description', 'price', 'image1', 'image2', 'image3', 'video', 'rating', 'discount', 'slug', 'meta_description', 'meta_keywords', 'meta_rating', 'category', 'related_products', 'details', 'in_pack_items'],
'chat': ['name', 'description', 'price', 'in_stock', 'discount', ]
'list': ['name', 'image1', 'video', 'rating', 'slug', 'category', 'variants'],
'instance': ['name', 'description', 'image1', 'image2', 'image3', 'video', 'rating', 'slug', 'meta_description', 'meta_keywords', 'meta_rating', 'category', 'related_products', 'details', 'in_pack_items', 'variants'],
'chat': ['name', 'description', ]
}
def get_price(self, obj):
dollor_price = self.context.get('dollor_price')
toman_price = obj.get_toman_price(dollor_price=dollor_price)
return "{:,.0f} تومان".format(toman_price)
def get_is_new(self, obj):
return timezone.now() < obj.created_at + timedelta(days=7)
@@ -74,8 +92,8 @@ class DynamicProductSerializer(serializers.ModelSerializer):
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = CommentModel
fields = "__all__"
read_only_fields = ('show', 'product', 'user')
exclude = ('review_status', )
read_only_fields = ('review_status', 'product', 'user')
class SubCategorySerializer(serializers.ModelSerializer):
product_count = serializers.SerializerMethodField()