|
|
|
|
@ -6,10 +6,14 @@ from django.core.mail import EmailMessage |
|
|
|
|
from django.db import models |
|
|
|
|
from django.utils import timezone |
|
|
|
|
from yandex_money.models import Payment |
|
|
|
|
import logging |
|
|
|
|
|
|
|
|
|
from progress.models import Progress |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
logger_business_rules = logging.getLogger('business_rules') |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Bill(models.Model): |
|
|
|
|
course_token = models.UUIDField(verbose_name="Токен курса", editable=False) |
|
|
|
|
user = models.ForeignKey(settings.AUTH_USER_MODEL, verbose_name='Плательщик', related_name='bill_user') |
|
|
|
|
@ -24,6 +28,7 @@ class Bill(models.Model): |
|
|
|
|
return '%s: %s' % (self.id, self.user) |
|
|
|
|
|
|
|
|
|
def freeze_course(self, user): |
|
|
|
|
if self.invoice_set.exclude('F').exists(): |
|
|
|
|
try: |
|
|
|
|
p = Progress.objects.get(user=user, course_token=self.course_token) |
|
|
|
|
p.freeze = True |
|
|
|
|
@ -34,6 +39,12 @@ class Bill(models.Model): |
|
|
|
|
self.freeze = True |
|
|
|
|
self.save() |
|
|
|
|
|
|
|
|
|
else: |
|
|
|
|
logger_business_rules.warning('Попытка нарушения правила отказа от плотежей', exc_info=True, extra={ |
|
|
|
|
'description': 'Пользоваль пытается отказатся от платежей по счёту, однако все платежи уже оплачены', |
|
|
|
|
'user': user, |
|
|
|
|
}) |
|
|
|
|
|
|
|
|
|
def get_full_price(self): |
|
|
|
|
return sum([i.price for i in self.invoice_set.all() if not i.price is None]) |
|
|
|
|
|
|
|
|
|
|