75 lines
2.9 KiB
Python
75 lines
2.9 KiB
Python
from django.db import models
|
|
from BaseModels.base_models import BaseModel
|
|
from SubscribesApp.models import Subscribe, SubscribeForUser
|
|
from AuthApp.models import User
|
|
from django.utils.translation import gettext as _
|
|
|
|
class SubscribeOrder(BaseModel):
|
|
|
|
subscribe = models.ForeignKey(
|
|
Subscribe, verbose_name=_('Подписка'),
|
|
on_delete=models.SET_NULL, blank=True, null=True,
|
|
related_name='subscribe_orders_for_subscribe'
|
|
)
|
|
|
|
user = models.ForeignKey(
|
|
User, verbose_name=_('Пользователь'),
|
|
on_delete=models.SET_NULL, blank=True, null=True,
|
|
related_name='subscribe_orders_for_user'
|
|
)
|
|
|
|
subscribe_for_user = models.OneToOneField(
|
|
SubscribeForUser, verbose_name=_('Подписка пользователя'),
|
|
on_delete=models.SET_NULL, blank=True, null=True,
|
|
related_name='subscribe_orders_for_user_subscribe'
|
|
)
|
|
|
|
sum = models.PositiveSmallIntegerField(verbose_name=_('Сумма'), default=0)
|
|
currency = models.CharField(verbose_name=_('Валюта'), max_length=3, default='KZT')
|
|
segment = models.CharField(verbose_name=_('ID Сегмента'), null=True, default=None)
|
|
merchant_order_id = models.CharField(verbose_name=_('merchant_order_id'), null=True, default=None)
|
|
bank_order_id = models.CharField(verbose_name=_('ID заказа в банке'), null=True, default=None)
|
|
|
|
status = models.CharField(verbose_name=_('Статус заказа в банке'), null=True, default=None)
|
|
last_operation_status = models.CharField(verbose_name=_('Статус последней операции'), null=True, default=None)
|
|
|
|
pay_page = models.URLField(verbose_name=_('Ссылка на страницу оплаты'), null=True, blank=True, default=None)
|
|
|
|
class Meta:
|
|
verbose_name = _('Заказ на подписку')
|
|
verbose_name_plural = _('Заказы на подписки')
|
|
|
|
def activate_subscribe_for_user(self):
|
|
from datetime import datetime, timedelta
|
|
|
|
kwargs = {
|
|
'user': self.user,
|
|
'subscribe': self.subscribe,
|
|
'last_paid_DT': datetime.now(),
|
|
'receive_finish_subscribe_msg': True,
|
|
# 'enable': True,
|
|
}
|
|
|
|
from SubscribesApp.funcs import create_subscribe_by_data
|
|
subscribe_for_user = create_subscribe_by_data(kwargs)
|
|
self.subscribe_for_user = subscribe_for_user
|
|
self.enable = False
|
|
self.save()
|
|
|
|
subscribe_for_user.activate(
|
|
paid_period_from_DT=datetime.now(),
|
|
paid_period_to_DT=datetime.now() + timedelta(hours=self.subscribe.period)
|
|
)
|
|
|
|
return self
|
|
|
|
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 |