You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
4.2 KiB
101 lines
4.2 KiB
# -*- coding: utf-8 -*-
|
|
from datetime import timedelta
|
|
|
|
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_,
|
|
status__in=[consts.LICENSE_TEST_PERIOD, consts.LICENSE_PAID, consts.LICENSE_ACTIVE], deleted=False)
|
|
|
|
licenses.filter(status=consts.LICENSE_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),
|
|
status=consts.LICENSE_PAID, deleted=False)
|
|
|
|
if not licenses_remain:
|
|
licenses_to_pay = License.objects.filter(company=profile, status=consts.LICENSE_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.LICENSE_PAY_DAYS - 1),
|
|
status=consts.LICENSE_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))
|
|
|