Příjemci chtějí dostávat e-maily… #29

Merged
zelvuska merged 2 commits from emaily into master 2 years ago
  1. 9
      korektury/admin.py
  2. 9
      korektury/views.py
  3. 10
      odevzdavatko/views.py
  4. 18
      seminar/migrations/0112_prijemce_zasilat_cislo_emailem.py
  5. 2
      seminar/models/personalni.py
  6. 4
      seminar/models/tvorba.py

9
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)

9
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)

10
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')

18
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'),
),
]

2
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

4
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()

Loading…
Cancel
Save