From 3beebb77247edb53ba4e6243d6de34a3809d45ff Mon Sep 17 00:00:00 2001 From: Ivlev Denis Date: Tue, 13 Mar 2018 14:33:36 +0300 Subject: [PATCH] LIL-292, LIL-293, LIL-304 --- .../notification/email/accept_author.html | 13 ++++++ .../notification/email/decline_author.html | 8 ++++ apps/user/admin.py | 2 + apps/user/models.py | 46 +++++++++++++++++++ 4 files changed, 69 insertions(+) create mode 100644 apps/notification/templates/notification/email/accept_author.html create mode 100644 apps/notification/templates/notification/email/decline_author.html diff --git a/apps/notification/templates/notification/email/accept_author.html b/apps/notification/templates/notification/email/accept_author.html new file mode 100644 index 00000000..44221ba5 --- /dev/null +++ b/apps/notification/templates/notification/email/accept_author.html @@ -0,0 +1,13 @@ +{% extends "notification/email/_base.html" %} + +{% block content %} +

Поздравляем! Вам одобрено назначение преподавателем!

+
+

Теперь вы можете публиковать курсы.

+ {% if password and email %} +

Параметры входа:

+

email: {{ email }}

+

пароль: {{ password }}

+ {% endif %} +
+{% endblock content %} diff --git a/apps/notification/templates/notification/email/decline_author.html b/apps/notification/templates/notification/email/decline_author.html new file mode 100644 index 00000000..d67dfe3e --- /dev/null +++ b/apps/notification/templates/notification/email/decline_author.html @@ -0,0 +1,8 @@ +{% extends "notification/email/_base.html" %} + +{% block content %} +

К сожалению вам отказано в назначении преподавателем!

+
+

{{ cause }}

+
+{% endblock content %} diff --git a/apps/user/admin.py b/apps/user/admin.py index be63ec0e..5440f146 100644 --- a/apps/user/admin.py +++ b/apps/user/admin.py @@ -28,6 +28,8 @@ class AuthorRequestAdmin(admin.ModelAdmin): 'first_name', 'last_name', 'status', + 'accepted_send_at', + 'declined_send_at', 'created_at', 'update_at', ) diff --git a/apps/user/models.py b/apps/user/models.py index b1f34217..7ccbf2dc 100644 --- a/apps/user/models.py +++ b/apps/user/models.py @@ -6,9 +6,11 @@ from django.db.models.signals import post_save from django.dispatch import receiver from django.contrib.auth.models import AbstractUser, UserManager from django.contrib.postgres import fields as pgfields +from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ from api.v1 import serializers +from apps.notification.utils import send_email class User(AbstractUser): @@ -130,3 +132,47 @@ class AuthorRequest(models.Model): verbose_name = 'Заявка не преподавателя' verbose_name_plural = 'Заявки не преподавателя' ordering = ('-created_at',) + + +@receiver(post_save, sender=AuthorRequest) +def handle_authorrequest_update(sender, instance=None, created=False, update_fields=[], **kwargs): + if not created: + if instance.status == AuthorRequest.DECLINED and not instance.declined_send_at: + send_email.delay( + 'Отказ заявки на преподавателя', + instance.email, + 'notification/email/decline_author.html', + cause=instance.cause, + ) + instance.declined_send_at = now() + instance.save() + elif instance.status == AuthorRequest.ACCEPTED and not instance.accepted_send_at: + email = None + password = None + try: + user = User.objects.get(email=instance.email) + except User.DoesNotExist: + email = instance.email + password = User.objects.make_random_password() + user = User.objects.create( + first_name=instance.first_name, + last_name=instance.last_name, + username=instance.email, + email=instance.email, + about=instance.about, + facebook=instance.facebook, + is_active=True, + is_email_proved=True, + ) + user.set_password(password) + user.role = User.AUTHOR_ROLE + user.save() + send_email.delay( + 'Заявка на преподавателя одобрена', + instance.email, + 'notification/email/accept_author.html', + email=email, + password=password, + ) + instance.accepted_send_at = now() + instance.save()