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