Новый дизайн грамот для пользователей

remotes/origin/feature/new-certs-1-10-19
gzbender 6 years ago
parent d5cab63385
commit 89fd74b660
  1. 27
      apps/notification/management/commands/animail_logs.py
  2. 14
      apps/notification/tasks.py
  3. 20
      apps/notification/templates/notification/email/certificate.html

@ -1,9 +1,10 @@
from email.utils import format_datetime from email.utils import format_datetime
import requests import requests
from datetime import datetime from datetime import datetime, timedelta
from django.core.management.base import BaseCommand from django.core.management.base import BaseCommand
from django.conf import settings from django.conf import settings
from django.utils import timezone
def get_logs(limit, date, subject): def get_logs(limit, date, subject):
@ -43,9 +44,14 @@ class Command(BaseCommand):
help='Limit', help='Limit',
) )
parser.add_argument( parser.add_argument(
'--date', '--date_start',
dest='date', dest='date_start',
help='Date', help='Date start',
)
parser.add_argument(
'--date_end',
dest='date_end',
help='Date end',
) )
parser.add_argument( parser.add_argument(
'--subject', '--subject',
@ -55,11 +61,14 @@ class Command(BaseCommand):
def handle(self, *args, **options): def handle(self, *args, **options):
emails = [] emails = []
end_dt = datetime(2019, 7, 11) date_start = datetime.strptime(options.get('date_start'), '%Y-%m-%d')
current_dt = options.get('date') date_end = datetime.strptime(options.get('date_end'), '%Y-%m-%d') + timedelta(hours=23, minutes=59) \
while current_dt <= end_dt: if options.get('date_end') else timezone.now()
e, current_dt = get_logs(options.get('limit'), current_dt, options.get('subject')) while date_start <= date_end:
e, date_start = get_logs(options.get('limit') or 300, date_start, options.get('subject'))
if not e:
break
emails += e emails += e
print(set(emails)) print(set(emails))
print(current_dt) print(date_start)

@ -49,25 +49,23 @@ def draw_cert(path, email, first_name, last_name, x=None, y=900, color=(29, 115,
return fn return fn
@app.task @app.task
def send_certificates(email=None, date_end=None, dry_run=False): def send_certificates(email=None, date_end=None, dry_run=False, users=None, subject='Грамота от Lil School',
template='notification/email/certificate.html'):
signed_path_pattern = 'signed-user-certificates/%d.jpg' signed_path_pattern = 'signed-user-certificates/%d.jpg'
if email: if email:
fn = draw_cert(os.path.join(settings.RESOURCES_ROOT, signed_path_pattern % 1), email, 'Имя', 'Фамилия')
file = open(fn, 'rb')
try: try:
send_email('Грамота от Lil School', email, 'notification/email/certificate.html', send_email('Грамота от Lil School', email, 'notification/email/certificate.html',
attachments=[(file.name, file.read(), 'image/jpeg')]) childs=[], certificate_number=1, many_childs=False, child_filled=False)
except: except:
pass pass
else: else:
print('Email has been sent') print('Email has been sent')
finally: finally:
file.close()
os.remove(fn)
return return
date_end = datetime.strptime(date_end, '%d-%m-%Y').date() if date_end else now().date() date_end = datetime.strptime(date_end, '%d-%m-%Y').date() if date_end else now().date()
today = now().date() today = now().date()
if users is None:
users = set(list(SchoolPayment.objects.paid().filter(date_end=date_end, add_days=False).values_list('user_id', flat=True))) users = set(list(SchoolPayment.objects.paid().filter(date_end=date_end, add_days=False).values_list('user_id', flat=True)))
user_notifications_qs = UserNotification.objects.filter(user_id__in=users) user_notifications_qs = UserNotification.objects.filter(user_id__in=users)
user_notifications = {un.user_id: un for un in user_notifications_qs} user_notifications = {un.user_id: un for un in user_notifications_qs}
@ -88,8 +86,8 @@ def send_certificates(email=None, date_end=None, dry_run=False):
else 1 else 1
un.save() un.save()
try: try:
send_email('Грамота от Lil School', un.user.email, 'notification/email/certificate.html', send_email(subject, un.user.email, template,
childs=un.user.childs.all(), user_notification=un, childs=un.user.childs.all(), certificate_number=un.certificate_number,
many_childs=un.user.childs.all().count() > 1, child_filled=un.user.child_filled) many_childs=un.user.childs.all().count() > 1, child_filled=un.user.child_filled)
except Exception as e: except Exception as e:
print('Not OK') print('Not OK')

@ -4,7 +4,7 @@
{% block content %} {% block content %}
<p style="margin: 0 0 20px">Привет!</p> <p style="margin: 0 0 20px">Привет!</p>
<div style="margin-bottom: 10px;"> <div style="margin-bottom: 10px;">
{% if not user_notification or user_notification.certificate_number == 1 %} {% if certificate_number == 1 %}
<p> <p>
Поздравляем! Вы прошли месяц обучения в Lil School.<br> Поздравляем! Вы прошли месяц обучения в Lil School.<br>
В письме {% if many_childs %}ссылки на грамоты. Распечатайте их и вручите вашим детям. В письме {% if many_childs %}ссылки на грамоты. Распечатайте их и вручите вашим детям.
@ -12,13 +12,13 @@
Ждём вас в следующем месяце на наших творческих занятиях! Ждём вас в следующем месяце на наших творческих занятиях!
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 2 %} {% if certificate_number == 2 %}
<p> <p>
Вы помните, что каждый месяц вам {% if many_childs %}приходят грамоты{% else %}приходит грамота{% endif %} за прекрасную учебу в нашей творческой школе?<br> Вы помните, что каждый месяц вам {% if many_childs %}приходят грамоты{% else %}приходит грамота{% endif %} за прекрасную учебу в нашей творческой школе?<br>
Скачивайте. Распечатывайте. И соберите свою коллекцию! Скачивайте. Распечатывайте. И соберите свою коллекцию!
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 3 %} {% if certificate_number == 3 %}
<p> <p>
Вам понравился наш творческий месяц?<br> Вам понравился наш творческий месяц?<br>
В письме вы найдёте {% if many_childs %}ссылки на грамоты, они{% else %}ссылку на грамоту, она{% endif %} для вашей семьи.<br> В письме вы найдёте {% if many_childs %}ссылки на грамоты, они{% else %}ссылку на грамоту, она{% endif %} для вашей семьи.<br>
@ -26,14 +26,14 @@
Ждём вас в следующем месяце. Ждём вас в следующем месяце.
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 4 %} {% if certificate_number == 4 %}
<p> <p>
Прошёл целый месяц обучения на платформе Lil School - месяц творчества, креатива и невероятных идей.<br> Прошёл целый месяц обучения на платформе Lil School - месяц творчества, креатива и невероятных идей.<br>
Во письме вас {% if many_childs %}ждут ссылки на грамоты{% else %}ждёт ссылка на грамоту{% endif %}.<br> Во письме вас {% if many_childs %}ждут ссылки на грамоты{% else %}ждёт ссылка на грамоту{% endif %}.<br>
До встречи на занятиях! До встречи на занятиях!
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 5 %} {% if certificate_number == 5 %}
<p> <p>
{% if many_childs %} {% if many_childs %}
Ваши грамоты за успехи в учебе в Lil School ждут вас.<br> Ваши грамоты за успехи в учебе в Lil School ждут вас.<br>
@ -46,7 +46,7 @@
До встречи в следующем месяце! До встречи в следующем месяце!
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 6 %} {% if certificate_number == 6 %}
<p> <p>
Как здорово вы потрудились на занятиях в этом месяце!<br> Как здорово вы потрудились на занятиях в этом месяце!<br>
И {% if many_childs %}наши грамоты уже ждут{% else %}наша грамота уже ждёт{% endif %} вас!<br> И {% if many_childs %}наши грамоты уже ждут{% else %}наша грамота уже ждёт{% endif %} вас!<br>
@ -54,14 +54,14 @@
Ждём вас в следующем месяце! Ждём вас в следующем месяце!
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 7 %} {% if certificate_number == 7 %}
<p> <p>
Какой классный месяц у нас был! Вместе мы очень здорово и креативно потрудились.<br> Какой классный месяц у нас был! Вместе мы очень здорово и креативно потрудились.<br>
В письме вас {% if many_childs %}ждут ссылки на заслуженные грамоты{% else %}ждёт ссылка на заслуженную грамоту{% endif %}!<br> В письме вас {% if many_childs %}ждут ссылки на заслуженные грамоты{% else %}ждёт ссылка на заслуженную грамоту{% endif %}!<br>
До встречи на уроках! До встречи на уроках!
</p> </p>
{% endif %} {% endif %}
{% if user_notification and user_notification.certificate_number == 8 %} {% if certificate_number == 8 %}
<p> <p>
Месяц творчества и креатива пролетел как один миг! А как много работ мы вместе сделали!<br> Месяц творчества и креатива пролетел как один миг! А как много работ мы вместе сделали!<br>
Вы - большие молодцы.<br> Вы - большие молодцы.<br>
@ -73,11 +73,11 @@
{% if many_childs %} {% if many_childs %}
Ссылки на грамоты:<br> Ссылки на грамоты:<br>
{% for child in childs %} {% for child in childs %}
<a href="{% setting 'MAIN_HOST' %}{% url 'get-certificate' cert=user_notification.certificate_number %}?child={{ child.id }}">Грамота ({{ child.full_name }})</a><br> <a href="{% setting 'MAIN_HOST' %}{% url 'get-certificate' cert=certificate_number %}?child={{ child.id }}">Грамота ({{ child.full_name }})</a><br>
{% endfor %} {% endfor %}
{% else %} {% else %}
Ссылка на грамоту:<br> Ссылка на грамоту:<br>
<a href="{% setting 'MAIN_HOST' %}{% url 'get-certificate' cert=user_notification.certificate_number %}{% if child_filled %}?child={{ childs.0.id }}{% endif %}">Скачать грамоту</a> <a href="{% setting 'MAIN_HOST' %}{% url 'get-certificate' cert=certificate_number %}{% if child_filled %}?child={{ childs.0.id }}{% endif %}">Скачать грамоту</a>
{% endif %} {% endif %}
</p> </p>
</div> </div>

Loading…
Cancel
Save