+ PriceField

This commit is contained in:
Phil Zhitnikov 2024-05-20 23:08:11 +04:00
parent eb4b29dfdf
commit 285b9decd9
2 changed files with 22 additions and 13 deletions

6
poizonstore/utils.py Normal file
View File

@ -0,0 +1,6 @@
from rest_framework.fields import DecimalField
class PriceField(DecimalField):
def __init__(self, *args, max_digits=10, decimal_places=2, min_value=0, **kwargs):
super().__init__(*args, max_digits=max_digits, decimal_places=decimal_places, min_value=min_value, **kwargs)

View File

@ -6,6 +6,7 @@ from account.serializers import UserSerializer
from utils.exceptions import CRMException from utils.exceptions import CRMException
from store.models import Checklist, GlobalSettings, Category, PaymentMethod, Promocode, Image, Gift from store.models import Checklist, GlobalSettings, Category, PaymentMethod, Promocode, Image, Gift
from store.utils import get_primary_key_related_model from store.utils import get_primary_key_related_model
from poizonstore.utils import PriceField
class ImageSerializer(serializers.ModelSerializer): class ImageSerializer(serializers.ModelSerializer):
@ -36,7 +37,7 @@ class CategoryChecklistSerializer(serializers.ModelSerializer):
class CategorySerializer(serializers.ModelSerializer): class CategorySerializer(serializers.ModelSerializer):
chinarush = serializers.DecimalField(source='delivery_price_CN_RU', max_digits=10, decimal_places=2) chinarush = PriceField(source='delivery_price_CN_RU')
class Meta: class Meta:
model = Category model = Category
@ -56,6 +57,7 @@ class CategoryFullSerializer(CategorySerializer):
class GiftSerializer(serializers.ModelSerializer): class GiftSerializer(serializers.ModelSerializer):
image = Base64ImageField(required=False, allow_null=True) image = Base64ImageField(required=False, allow_null=True)
min_price = PriceField()
class Meta: class Meta:
model = Gift model = Gift
@ -79,17 +81,17 @@ class ChecklistSerializer(serializers.ModelSerializer):
use_bonuses = serializers.BooleanField(write_only=True, default=False) use_bonuses = serializers.BooleanField(write_only=True, default=False)
gift = get_primary_key_related_model(GiftSerializer, required=False, allow_null=True) gift = get_primary_key_related_model(GiftSerializer, required=False, allow_null=True)
yuan_rate = serializers.DecimalField(read_only=True, max_digits=10, decimal_places=2) yuan_rate = PriceField(read_only=True)
price_yuan = serializers.DecimalField(required=False, max_digits=10, decimal_places=2) price_yuan = PriceField(required=False)
price_rub = serializers.IntegerField(read_only=True) price_rub = serializers.IntegerField(read_only=True)
delivery_price_CN = serializers.DecimalField(read_only=True, max_digits=10, decimal_places=2) delivery_price_CN = PriceField(read_only=True)
delivery_price_CN_RU = serializers.DecimalField(read_only=True, max_digits=10, decimal_places=2) delivery_price_CN_RU = PriceField(read_only=True)
full_price = serializers.IntegerField(read_only=True) full_price = PriceField(read_only=True)
real_price = serializers.DecimalField(required=False, allow_null=True, max_digits=10, decimal_places=2) real_price = PriceField(required=False, allow_null=True)
commission_rub = serializers.DecimalField(read_only=True, max_digits=10, decimal_places=2) commission_rub = PriceField(read_only=True)
customer = get_primary_key_related_model(UserSerializer, required=False, allow_null=True) customer = get_primary_key_related_model(UserSerializer, required=False, allow_null=True)
@ -237,15 +239,16 @@ class ClientUpdateChecklistSerializer(ClientChecklistSerializerMixin, ChecklistS
class GlobalSettingsSerializer(serializers.ModelSerializer): class GlobalSettingsSerializer(serializers.ModelSerializer):
currency = serializers.DecimalField(source='full_yuan_rate', read_only=True, max_digits=10, decimal_places=2) yuan_rate = PriceField(source='full_yuan_rate', read_only=True)
yuan_rate_last_updated = serializers.DateTimeField(read_only=True) yuan_rate_commission = PriceField()
chinadelivery = serializers.DecimalField(source='delivery_price_CN', max_digits=10, decimal_places=2) chinadelivery = PriceField(source='delivery_price_CN')
commission = serializers.DecimalField(source='commission_rub', max_digits=10, decimal_places=2) commission = PriceField(source='commission_rub')
pickup = serializers.CharField(source='pickup_address') pickup = serializers.CharField(source='pickup_address')
class Meta: class Meta:
model = GlobalSettings model = GlobalSettings
fields = ('currency', 'yuan_rate_last_updated', 'yuan_rate_commission', 'commission', 'chinadelivery', 'pickup', 'time_to_buy') fields = ('yuan_rate', 'yuan_rate_last_updated', 'yuan_rate_commission', 'commission', 'chinadelivery', 'pickup', 'time_to_buy')
read_only_fields = ('yuan_rate_last_updated',)
class AnonymousGlobalSettingsSerializer(GlobalSettingsSerializer): class AnonymousGlobalSettingsSerializer(GlobalSettingsSerializer):