finance logging

remotes/origin/yandex_rebiling
Andrey 8 years ago
parent 78271b9176
commit 081353eed1
  1. 1
      access/views.py
  2. 5
      courses/models.py
  3. 29
      finance/models.py
  4. 10
      lms/settings.py
  5. 1
      progress/views.py

@ -128,6 +128,7 @@ class FindUserView(APIView):
class DetailUserView(APIView):
renderer_classes = (JSONRenderer,)
permission_classes = (permissions.IsAuthenticated,)
@staticmethod
def post(request, out_key=None):

@ -72,7 +72,7 @@ class Topic(models.Model):
class CourseManager(models.Manager):
def update_or_create_course(self, image=None, big_image=None, statistic=None,
def update_or_create_course(self, image=None, big_image=None, statistic=None, old_slug=None,
big_mobile_image=None, slug=None, teacher_tokens=None,
level=None, direction=None, **kwargs):
@ -102,10 +102,11 @@ class CourseManager(models.Manager):
kwargs['direction'] = get_real_name(COURSE_DIRECTION, direction[0])
try:
course = self.get(slug=slug)
course = self.get(slug=old_slug)
for i in kwargs:
if kwargs[i]:
setattr(course, i, kwargs[i])
course.slug = slug
course.save()
except ObjectDoesNotExist:

@ -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,15 +28,22 @@ class Bill(models.Model):
return '%s: %s' % (self.id, self.user)
def freeze_course(self, user):
try:
p = Progress.objects.get(user=user, course_token=self.course_token)
p.freeze = True
p.save()
except Progress.DoesNotExist:
pass
self.freeze = True
self.save()
if self.invoice_set.exclude('F').exists():
try:
p = Progress.objects.get(user=user, course_token=self.course_token)
p.freeze = True
p.save()
except Progress.DoesNotExist:
pass
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])

@ -212,6 +212,11 @@ LOGGING = {
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
'tags': {'custom-tag': 'yandex'},
},
'business_rules': {
'level': 'DEBUG',
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
'tags': {'custom-tag': 'business_rules'},
},
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
@ -228,6 +233,11 @@ LOGGING = {
'level': 'DEBUG',
'propagate': False
},
'business_rules': {
'handlers': ['business_rules'],
'level': 'DEBUG',
'propagate': False
},
},
}

@ -93,6 +93,7 @@ class CourseProgressUserView(APIView):
class TeacherUpdateProgress(APIView):
permission_classes = (permissions.IsAuthenticated, )
renderer_classes = (JSONRenderer,)
@staticmethod

Loading…
Cancel
Save