81 lines
3.3 KiB
Python
81 lines
3.3 KiB
Python
from django.db import models
|
||
from BaseModels.base_models import BaseModel
|
||
from django.utils.translation import gettext_lazy as _
|
||
from colorfield.fields import ColorField
|
||
|
||
|
||
# options_list 29.05.2024
|
||
# СМС уведомления
|
||
# push уведомления
|
||
# выделение заявки цветом (20 заявок) + 70 поднятий
|
||
# выделение заявок цветом (3 заявки) + 5 поднятий
|
||
# уведомление на e-mail о появлении перевозчика по заданным критериям
|
||
# размещение заявок
|
||
# просмотр контактов
|
||
|
||
class SubscribeOption(BaseModel):
|
||
|
||
class Meta:
|
||
verbose_name = _('Опция подписки')
|
||
verbose_name_plural = _('Опции подписки')
|
||
ordering = ['order']
|
||
|
||
|
||
|
||
class Subscribe(BaseModel):
|
||
|
||
price = models.FloatField(verbose_name='Стоимость', default=0)
|
||
options = models.ManyToManyField(
|
||
SubscribeOption, verbose_name=_('Подключенные опции'), blank=True,
|
||
related_name='rel_subscribes_for_option'
|
||
)
|
||
period_name = models.CharField(max_length=250, verbose_name=_('Название периода'))
|
||
period = models.IntegerField(default=0, verbose_name=_('Длительность подписки в часах'))
|
||
|
||
bg_color = ColorField(default='#FFFFFF', verbose_name=_('Цвет фона'))
|
||
text_color = ColorField(default='#000000', verbose_name=_('Цвет текста'))
|
||
|
||
def get_last_order(self, user):
|
||
order = None
|
||
orders = self.subscribe_orders_for_subscribe.filter(user=user, enable=True).order_by('-createDT')
|
||
if orders:
|
||
order = orders[0]
|
||
return order
|
||
|
||
class Meta:
|
||
verbose_name = _('Подписка')
|
||
verbose_name_plural = _('Подписки')
|
||
|
||
|
||
class SubscribeForUser(BaseModel):
|
||
from AuthApp.models import User
|
||
|
||
user = models.ForeignKey(
|
||
User, verbose_name=_('Пользователь'), related_name='rel_userSubscribes_for_user', on_delete=models.CASCADE)
|
||
subscribe = models.ForeignKey(
|
||
Subscribe, verbose_name=_('Подписка'), null=True, blank=True, related_name='rel_userSubscribes_for_subscribe',
|
||
on_delete=models.SET_NULL
|
||
)
|
||
last_paid_DT = models.DateTimeField(verbose_name=_('Последняя дата оплаты'), blank=True, null=True)
|
||
paid_period_from_DT = models.DateTimeField(verbose_name=_('Оплаченный период с'), blank=True, null=True)
|
||
paid_period_to_DT = models.DateTimeField(verbose_name=_('Оплаченный период до'), blank=True, null=True)
|
||
|
||
auto_continue = models.BooleanField(default=False, verbose_name=_('Автопродление'))
|
||
|
||
receive_finish_subscribe_msg = models.BooleanField(
|
||
default=False, verbose_name=_('Получать сообщения о окончании периода'))
|
||
|
||
class Meta:
|
||
verbose_name = _('Пользовательская подписка')
|
||
verbose_name_plural = _('Пользовательские подписки')
|
||
|
||
def __str__(self):
|
||
res = 'Подписка'
|
||
if self.subscribe:
|
||
res += f' {self.subscribe.name}'
|
||
if self.user:
|
||
res += f' для {self.user.username}'
|
||
|
||
if not res:
|
||
res += f' {str(self.id)}'
|
||
return res |