from .models import * from rest_framework import serializers from django.utils import timezone from datetime import timedelta class ProductChatSerializer(serializers.ModelSerializer): price = serializers.SerializerMethodField() is_new = serializers.SerializerMethodField() class Meta: model = ProductModel fields = ['name', 'description', 'price', 'in_stock', 'discount', ] def get_price(self, obj): dollor_price = self.context.get('dollor_price') dollar_to_dirham = 0.27 if dollor_price is None: raise ValidationError({"dollor_price": "The 'dollor_price' must be provided in the context for dollar pricing."}) if obj.currency == 'toman': toman_price = obj.price elif obj.currency == 'dollor': toman_price = obj.price * dollor_price elif obj.currency == 'derham': toman_price = obj.price * dollor_price * dollar_to_dirham return "{:,.0f} تومان".format(toman_price) def get_is_new(self, obj): return timezone.now() < obj.created_at + timedelta(days=7) class ProductSerializer(ProductChatSerializer): class Meta: model = ProductModel fields = "__all__" class CommentSerializer(serializers.ModelSerializer): class Meta: model = CommentModel fields = "__all__" read_only_fields = ('show', 'product', 'user') class SubCategorySerializer(serializers.ModelSerializer): product_count = serializers.SerializerMethodField() class Meta: model = SubCategoryModel fields = ['id', 'name', 'slug','icon', 'meta_title', 'meta_description', 'product_count', 'show'] def get_product_count(self, obj): return obj.products.count() class MainCategorySerializer(serializers.ModelSerializer): subcategorys = SubCategorySerializer(many=True) class Meta: model = MainCategoryModel fields = ['id', 'name', 'slug', 'icon', 'meta_title', 'meta_description', 'subcategorys']