# coding=utf-8 from django.db.models import Q import datetime from finance.models import Bill, Price from courses.models import CourseMap def system_check_bill(token, user, theme_type='B'): if user.is_admin: return True # Проверка счета, как подписки __point = CourseMap.objects.get(token=token) course = __point.course if user in course.teachers.all(): return True prices = Price.objects.filter(included=__point).values_list('id', flat=True) for b in Bill.objects.filter(service__id__in=prices, user=user, status='F'): if b: if b.service.by_time: if b.finish_date + datetime.timedelta(days=b.service.by_time) > datetime.datetime.now(): return True else: return False else: return True m_type = [] if theme_type == 'B' or theme_type == 'M': m_type = ['B', 'E', 'P'] elif theme_type == 'E': m_type = ['E', 'P'] elif theme_type == 'P': m_type = ['P'] if m_type: bill = Bill.objects.filter(service__included=None, service__course=course, user=user, status='F', service__m_type__in=m_type) if bill.exists(): check = [] for b in bill: if b.service.by_time: check.append(b) if not check: return True else: result = False for b in check: if b.finish_date + datetime.timedelta(days=b.service.by_time) > datetime.datetime.now(): result = True if result: return True else: return False return False