# -*- coding: utf-8 -*- from django.dispatch import receiver from django.conf import settings from django.utils.translation import ugettext from django.template.loader import render_to_string from django.db.models.signals import post_save from greenmine.base import signals from greenmine.base.utils.auth import set_token from greenmine.base.mail.tasks import send_mail, send_bulk_mail from greenmine.scrum.models import Project from greenmine.profile.services import RoleGroupsService @receiver(signals.mail_new_user) def mail_new_user(sender, user, **kwargs): template = render_to_string("email/new.user.html", { "user": user, "token": set_token(user), 'current_host': settings.HOST, }) subject = ugettext("Greenmine: wellcome!") send_mail.delay(subject, template, [user.email]) @receiver(signals.mail_recovery_password) def mail_recovery_password(sender, user, **kwargs): template = render_to_string("email/forgot.password.html", { "user": user, "token": set_token(user), "current_host": settings.HOST, }) subject = ugettext("Greenmine: password recovery.") send_mail.delay(subject, template, [user.email]) @receiver(signals.mail_milestone_created) def mail_milestone_created(sender, milestone, user, **kwargs): participants = milestone.project.all_participants() emails_list = [] subject = ugettext("Greenmine: sprint created") for person in participants: template = render_to_string("email/milestone.created.html", { "person": person, "current_host": settings.HOST, "milestone": milestone, "user": user, }) emails_list.append([subject, template, [person.email]]) send_bulk_mail.delay(emails_list) @receiver(signals.mail_userstory_created) def mail_userstory_created(sender, us, user, **kwargs): participants = us.milestone.project.all_participants() emails_list = [] subject = ugettext("Greenmine: user story created") for person in participants: template = render_to_string("email/userstory.created.html", { "person": person, "current_host": settings.HOST, "us": us, "user": user, }) emails_list.append([subject, template, [person.email]]) send_bulk_mail.delay(emails_list) @receiver(signals.mail_task_created) def mail_task_created(sender, task, user, **kwargs): participants = task.us.milestone.project.all_participants() emails_list = [] subject = ugettext("Greenmine: task created") for person in participants: template = render_to_string("email/task.created.html", { "person": person, "current_host": settings.HOST, "task": task, "user": user, }) emails_list.append([subject, template, [person.email]]) send_bulk_mail.delay(emails_list) @receiver(signals.mail_task_assigned) def mail_task_assigned(sender, task, user, **kwargs): template = render_to_string("email/task.assigned.html", { "person": task.assigned_to, "task": task, "user": user, "current_host": settings.HOST, }) subject = ugettext("Greenmine: task assigned") send_mail.delay(subject, template, [task.assigned_to.email]) @receiver(post_save, sender=Project) def project_post_save(sender, instance, created, **kwargs): """ Recalculate project groups """ if created: RoleGroupsService().replicate_all_roles_on_one_project(instance)