diff --git a/korektury/views.py b/korektury/views.py index aea3813a..47f62b6d 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -186,7 +186,7 @@ class KorekturyView(generic.TemplateView): if email: emails.discard(email) - if not settings.SEND_EMAIL_NOTIFICATIONS: + if not settings.POSLI_MAILOVOU_NOTIFIKACI: print("Poslal bych upozornění na tyto adresy: ", " ".join(emails)) return diff --git a/mamweb/settings_common.py b/mamweb/settings_common.py index 7a2bf85b..95008c31 100644 --- a/mamweb/settings_common.py +++ b/mamweb/settings_common.py @@ -308,4 +308,4 @@ CISLO_IMG_DIR = os.path.join('cislo', 'img') # E-MAIL NOTIFICATIONS -SEND_EMAIL_NOTIFICATIONS = False +POSLI_MAILOVOU_NOTIFIKACI = False diff --git a/mamweb/settings_prod.py b/mamweb/settings_prod.py index 1c223842..0374d88b 100644 --- a/mamweb/settings_prod.py +++ b/mamweb/settings_prod.py @@ -66,4 +66,4 @@ LOGGING['handlers']['registration_error_log']['filename'] = '/home/mam-web/logs/ # E-MAIL NOTIFICATIONS -SEND_EMAIL_NOTIFICATIONS = True +POSLI_MAILOVOU_NOTIFIKACI = True diff --git a/seminar/models.py b/seminar/models.py index f3491089..797a215c 100644 --- a/seminar/models.py +++ b/seminar/models.py @@ -31,6 +31,8 @@ from unidecode import unidecode # Používám pro získání ID odkazu (ještě from polymorphic.models import PolymorphicModel +from django.core.mail import EmailMessage +from seminar.utils import aktivniResitele class SeminarModelBase(models.Model): @@ -624,9 +626,43 @@ class Cislo(SeminarModelBase): return None return c + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.__original_verejne = self.verejne_db + + def posli_cislo_mailem(self): + # parametry e-mailu + odkaz = self.get_absolute_url() + + poslat_z_mailu = 'zadani@mam.mff.cuni.cz' + predmet = 'Vyšlo číslo {}'.format(self.kod()) + text_mailu = 'Ahoj,\n' \ + 'na adrese {} najdete nejnovější číslo.\n' \ + 'Vaše M&M\n'.format(odkaz) + + # Prijemci e-mailu + emaily = map(lambda r: r.osoba.email, filter(lambda r: r.zasilat_cislo_emailem, aktivniResitele(self))) + + if not settings.POSLI_MAILOVOU_NOTIFIKACI: + print("Poslal bych upozornění na tyto adresy: ", " ".join(emaily)) + return + + email = EmailMessage( + subject=predmet, + body=text_mailu, + from_email=poslat_z_mailu, + bcc=list(emaily) + #bcc = příjemci skryté kopie + ) + + email.send() + def save(self, *args, **kwargs): super().save(*args, **kwargs) self.vygeneruj_nahled() + # Při zveřejnění pošle mail + if self.verejne_db and not self.__original_verejne: + self.posli_cislo_mailem() # *Node.save() aktualizuje název *Nodu. try: self.cislonode.save()