# -*- coding: utf-8 -*- from datetime import timedelta from django.db.models import Q from django.core.mail import EmailMessage from django.template.loader import render_to_string from django.conf import settings from project.customer import consts SUPPORT_EMAIL = getattr(settings, 'SUPPORT_EMAIL') def check_one_profile(profile, License, now_, manual=False): profile_was_active = profile.active licenses = (License.objects.filter(company=profile, date_from__lte=now_, date_to__gte=now_, deleted=False) .filter(Q(status__in = [consts.LICENSE_TEST_PERIOD, consts.LICENSE_ACTIVE]) | Q(order_status=consts.ORDER_PAID)) ) licenses.filter(order_status=consts.ORDER_PAID).update(status=consts.LICENSE_ACTIVE) profile.active = False if licenses: profile.active = True profile.save() user_email = profile.users.get().email # если профиль только что активирован if profile.active and not profile_was_active: template_name = 'myauth/license_activated.txt' subject = u'Документор: Профиль активирован' dict_context = { 'user_email': user_email, 'support_email': SUPPORT_EMAIL, 'license_starts': licenses[0].date_from, 'license_ends': licenses[0].date_to, } email_body = render_to_string(template_name, dict_context) email = EmailMessage(subject=subject, to=(user_email,), body=email_body) email.send() if not manual: licenses_remain = License.objects.filter(company=profile, date_from__gt = now_ + timedelta(days=1), order_status=consts.ORDER_PAID, deleted=False) if not licenses_remain: licenses_to_pay = License.objects.filter(company=profile, order_status=consts.ORDER_UNPAID, deleted=False) licenses = License.objects.filter(company=profile, date_to__lt=now_, status__in=[consts.LICENSE_TEST_PERIOD, consts.LICENSE_ACTIVE], deleted=False) licenses.update(status=consts.LICENSE_EXPIRED) if licenses: template_name = 'myauth/license_ended.txt' subject = u'Документор: срок действия лицензии окончен' dict_context = { 'user_email': user_email, 'support_email': SUPPORT_EMAIL, 'license_ends': licenses[0].date_to, 'licenses_to_pay': licenses_to_pay, } email_body = render_to_string(template_name, dict_context) email = EmailMessage(subject=subject, to=(user_email,), body=email_body) email.send() licenses = License.objects.filter(company=profile, date_to = now_ + timedelta(days=1), status__in=[consts.LICENSE_TEST_PERIOD, consts.LICENSE_ACTIVE], deleted=False) if licenses: template_name = 'myauth/license_ends.txt' subject = u'Документор: окончание срока действия лицензии' dict_context = { 'user_email': user_email, 'support_email': SUPPORT_EMAIL, 'license_ends': licenses[0].date_to, 'licenses_to_pay': licenses_to_pay, } email_body = render_to_string(template_name, dict_context) email = EmailMessage(subject=subject, to=(user_email,), body=email_body) email.send() licenses = License.objects.filter(company=profile, order_date = now_ - timedelta(days = consts.ORDER_PAY_DAYS - 1), order_status=consts.ORDER_UNPAID, deleted=False) if licenses: template_name = 'myauth/license_to_pay.txt' subject = u'Документор: есть неоплаченные счета' dict_context = { 'user_email': user_email, 'support_email': SUPPORT_EMAIL, } email_body = render_to_string(template_name, dict_context) email = EmailMessage(subject=subject, to=(user_email,), body=email_body) email.send() def raise_if_no_profile(request): if not request.user.profile: raise Exception(u"Profile not found for user: %d, '%s'" % (request.user.pk, request.user.username))