From b8a9d67cc287b1eb00cd8612f125caf3971c8793 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 17 Apr 2023 20:15:39 +0200 Subject: [PATCH 1/2] send_mail -> EmailMessage --- korektury/admin.py | 9 +++++++-- korektury/views.py | 9 +++++++-- odevzdavatko/views.py | 10 +++++----- 3 files changed, 19 insertions(+), 9 deletions(-) diff --git a/korektury/admin.py b/korektury/admin.py index f2b0a319..5f92c542 100644 --- a/korektury/admin.py +++ b/korektury/admin.py @@ -12,7 +12,7 @@ from django.contrib import admin from reversion.admin import VersionAdmin from korektury.models import KorekturovanePDF -from django.core.mail import send_mail +from django.core.mail import EmailMessage from django.urls import reverse # Register your models here. @@ -64,6 +64,11 @@ Popis souboru: S pozdravem a korekturám zdar! Korekturovátko ''' - send_mail(predmet,text,odesilatel,[prijemce]) + EmailMessage( + subject=predmet, + body=text, + from_email=odesilatel, + to=[prijemce], + ).send() admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin) diff --git a/korektury/views.py b/korektury/views.py index efeab19d..564e1331 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -8,7 +8,7 @@ from django.views import generic from django.utils.translation import ugettext as _ from django.conf import settings from django.http import HttpResponseForbidden -from django.core.mail import send_mail +from django.core.mail import EmailMessage from django.db.models import Count,Q from .models import Oprava,Komentar,KorekturovanePDF, Organizator @@ -207,7 +207,12 @@ class KorekturyView(generic.TemplateView): print("---- Konec upozornění") return - send_mail(subject, text, from_email, list(emails)) + EmailMessage( + subject=subject, + body=text, + from_email=from_email, + to=list(emails), + ).send() def get_context_data(self, **kwargs): context = super().get_context_data(**kwargs) diff --git a/odevzdavatko/views.py b/odevzdavatko/views.py index 2390d27f..d3c74812 100644 --- a/odevzdavatko/views.py +++ b/odevzdavatko/views.py @@ -1,7 +1,7 @@ from django.core.exceptions import PermissionDenied from django.views.generic import ListView, DetailView, FormView from django.contrib.auth.mixins import LoginRequiredMixin -from django.core.mail import send_mail +from django.core.mail import EmailMessage from django.utils import timezone from django.views.generic import ListView, DetailView, FormView, CreateView from django.views.generic.list import MultipleObjectTemplateResponseMixin,MultipleObjectMixin @@ -449,11 +449,11 @@ class NahrajReseniView(LoginRequiredMixin, CreateView): seznam = "problému " + str(problemy[0]) if len(problemy) == 1 else 'následujícím problémům:\n' + ', \n'.join(map(str, problemy)) seznam_do_subjectu = "problému " + str(problemy[0]) + ("" if len(problemy) == 1 else f" (a dalším { len(problemy) - 1 })") - send_mail( + EmailMessage( subject="Nové řešení k " + seznam_do_subjectu, - message=f"Řešitel{ '' if resitel.pohlavi_muz else 'ka' } { resitel } právě nahrál{'' if resitel.pohlavi_muz else 'a' } nové řešení k { seznam }.\n\nHurá do opravování: { self.object.absolute_url() }", + body=f"Řešitel{ '' if resitel.pohlavi_muz else 'ka' } { resitel } právě nahrál{'' if resitel.pohlavi_muz else 'a' } nové řešení k { seznam }.\n\nHurá do opravování: { self.object.absolute_url() }", from_email="submitovatko@mam.mff.cuni.cz", # FIXME: Chceme to mít radši tady, nebo v nastavení? - recipient_list=list(prijemci), - ) + to=list(prijemci), + ).send() return formularOKView(self.request, text='Řešení úspěšně odevzdáno') From 397aacf8991ecc1d80ddd5b3a096fa16cb360d4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 17 Apr 2023 20:41:01 +0200 Subject: [PATCH 2/2] =?UTF-8?q?Pos=C3=ADl=C3=A1n=C3=AD=20e-mail=C5=AF=20p?= =?UTF-8?q?=C5=99=C3=ADjemc=C5=AFm?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../0112_prijemce_zasilat_cislo_emailem.py | 18 ++++++++++++++++++ seminar/models/personalni.py | 2 ++ seminar/models/tvorba.py | 4 ++++ 3 files changed, 24 insertions(+) create mode 100644 seminar/migrations/0112_prijemce_zasilat_cislo_emailem.py diff --git a/seminar/migrations/0112_prijemce_zasilat_cislo_emailem.py b/seminar/migrations/0112_prijemce_zasilat_cislo_emailem.py new file mode 100644 index 00000000..8efaf925 --- /dev/null +++ b/seminar/migrations/0112_prijemce_zasilat_cislo_emailem.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.28 on 2023-04-17 18:38 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0111_nikam2nezasilat_papirove'), + ] + + operations = [ + migrations.AddField( + model_name='prijemce', + name='zasilat_cislo_emailem', + field=models.BooleanField(default=False, help_text='True pokud chce příjemce dostávat číslo emailem', verbose_name='zasílat číslo emailem'), + ), + ] diff --git a/seminar/models/personalni.py b/seminar/models/personalni.py index 9ac85e51..2cb8539a 100644 --- a/seminar/models/personalni.py +++ b/seminar/models/personalni.py @@ -192,6 +192,8 @@ class Prijemce(SeminarModelBase): help_text='Které osobě či na jakou adresu se mají zasílat čísla', on_delete=models.CASCADE) + zasilat_cislo_emailem = models.BooleanField('zasílat číslo emailem', help_text='True pokud chce příjemce dostávat číslo emailem', default=False) + # FIXME: možná chceme něco jako vazbu na osobu XOR školu a počet kusů k zaslání # FIXME: a možná taky posílání na mail a možná taky přes něj chceme posílat i řešitelům diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index f2feb569..855c90f4 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -265,6 +265,7 @@ class Cislo(SeminarModelBase): poslat_z_mailu = 'zadani@mam.mff.cuni.cz' predmet = 'Vyšlo číslo {}'.format(self.kod()) + # TODO Možná nechceme všem psát „Ahoj“, např. příjemcům… text_mailu = 'Ahoj,\n' \ 'na adrese {} najdete nejnovější číslo.\n' \ 'Vaše M&M\n'.format(odkaz) @@ -294,6 +295,9 @@ class Cislo(SeminarModelBase): posli(text_mailu + 'P. S. Brzy budeme též rozesílat papírovou verzi čísla. Připomínáme, že pokud papírovou verzi čísla nevyužijete, můžete v https://mam.mff.cuni.cz/resitel/osobni-udaje/ zaškrtnout, abychom vám ji neposílali. Čísla vždy můžete nalézt v našem archivu a dál vám budou chodit e-mailem. Děkujeme.\n' + paticka, resitele_vsichni.exclude(zasilat=pm.Resitel.ZASILAT_NIKAM)) + paticka_prijemce = "---\nPokud tyto e-maily nechcete nadále dostávat, prosíme, ozvěte se nám na mam@matfyz.cz." + posli(text_mailu + paticka_prijemce, pm.Prijemce.objects.filter(zasilat_cislo_emailem=True)) + def save(self, *args, **kwargs): super().save(*args, **kwargs) self.vygeneruj_nahled()