* Moved GlobalSettings to core app * Moved bonus program logic from User to BonusProgram class * Worked on error handling a bit
48 lines
2.3 KiB
Python
48 lines
2.3 KiB
Python
from datetime import timedelta
|
||
|
||
from django.conf import settings
|
||
from django.db import models
|
||
|
||
from core.utils import CachedSingleton
|
||
|
||
|
||
@CachedSingleton("global_settings")
|
||
class GlobalSettings(models.Model):
|
||
yuan_rate = models.DecimalField('Курс CNY/RUB', max_digits=10, decimal_places=2, default=0)
|
||
yuan_rate_last_updated = models.DateTimeField('Дата обновления курса CNY/RUB', null=True, default=None)
|
||
yuan_rate_commission = models.DecimalField('Наценка на курс юаня, руб', max_digits=10, decimal_places=2, default=0)
|
||
delivery_price_CN = models.DecimalField('Цена доставки по Китаю', max_digits=10, decimal_places=2, default=0)
|
||
commission_rub = models.DecimalField('Комиссия, руб', max_digits=10, decimal_places=2, default=0)
|
||
pickup_address = models.CharField('Адрес пункта самовывоза', max_length=200, blank=True, null=True)
|
||
time_to_buy = models.DurationField('Время на покупку',
|
||
help_text="Через N времени заказ переходит из статуса 'Новый' в 'Черновик'",
|
||
default=timedelta(hours=3))
|
||
|
||
class Meta:
|
||
verbose_name = 'Глобальные настройки'
|
||
verbose_name_plural = 'Глобальные настройки'
|
||
|
||
def __str__(self) -> str:
|
||
return f'GlobalSettings <{self.id}>'
|
||
|
||
@property
|
||
def full_yuan_rate(self):
|
||
return self.yuan_rate + self.yuan_rate_commission
|
||
|
||
|
||
DEFAULT_CONFIG = settings.BONUS_PROGRAM_DEFAULT_CONFIG
|
||
|
||
|
||
@CachedSingleton("bonus_config")
|
||
class BonusProgramConfig(models.Model):
|
||
amount_signup = models.PositiveSmallIntegerField(
|
||
'Бонус за регистрацию', default=DEFAULT_CONFIG['amounts']['signup'])
|
||
amount_default_purchase = models.PositiveSmallIntegerField(
|
||
'Бонус за обычную покупку', default=DEFAULT_CONFIG['amounts']['default_purchase'])
|
||
amount_referral = models.PositiveSmallIntegerField(
|
||
'Реферальный бонус', default=DEFAULT_CONFIG['amounts']['referral'])
|
||
|
||
class Meta:
|
||
verbose_name = 'Настройки бонусной программы'
|
||
verbose_name_plural = 'Настройки бонусной программы'
|