Browse Source

Merge pull request 'Příjemci chtějí dostávat e-maily…' (!29) from emaily into master

Reviewed-on: #29
pull/28/head^2
Jonas Havelka 2 years ago
parent
commit
951185c1d3
  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 reversion.admin import VersionAdmin
from korektury.models import KorekturovanePDF from korektury.models import KorekturovanePDF
from django.core.mail import send_mail from django.core.mail import EmailMessage
from django.urls import reverse from django.urls import reverse
# Register your models here. # Register your models here.
@ -64,6 +64,11 @@ Popis souboru:
S pozdravem a korekturám zdar! S pozdravem a korekturám zdar!
Korekturovátko Korekturovátko
''' '''
send_mail(predmet,text,odesilatel,[prijemce]) EmailMessage(
subject=predmet,
body=text,
from_email=odesilatel,
to=[prijemce],
).send()
admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin) 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.utils.translation import ugettext as _
from django.conf import settings from django.conf import settings
from django.http import HttpResponseForbidden 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 django.db.models import Count,Q
from .models import Oprava,Komentar,KorekturovanePDF, Organizator from .models import Oprava,Komentar,KorekturovanePDF, Organizator
@ -207,7 +207,12 @@ class KorekturyView(generic.TemplateView):
print("---- Konec upozornění") print("---- Konec upozornění")
return 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): def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)

10
odevzdavatko/views.py

@ -1,7 +1,7 @@
from django.core.exceptions import PermissionDenied from django.core.exceptions import PermissionDenied
from django.views.generic import ListView, DetailView, FormView from django.views.generic import ListView, DetailView, FormView
from django.contrib.auth.mixins import LoginRequiredMixin 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.utils import timezone
from django.views.generic import ListView, DetailView, FormView, CreateView from django.views.generic import ListView, DetailView, FormView, CreateView
from django.views.generic.list import MultipleObjectTemplateResponseMixin,MultipleObjectMixin 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 = "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 })") 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, 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í? 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') 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', help_text='Které osobě či na jakou adresu se mají zasílat čísla',
on_delete=models.CASCADE) 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: 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 # 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' poslat_z_mailu = 'zadani@mam.mff.cuni.cz'
predmet = 'Vyšlo číslo {}'.format(self.kod()) predmet = 'Vyšlo číslo {}'.format(self.kod())
# TODO Možná nechceme všem psát „Ahoj“, např. příjemcům…
text_mailu = 'Ahoj,\n' \ text_mailu = 'Ahoj,\n' \
'na adrese {} najdete nejnovější číslo.\n' \ 'na adrese {} najdete nejnovější číslo.\n' \
'Vaše M&M\n'.format(odkaz) '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, 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)) 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): def save(self, *args, **kwargs):
super().save(*args, **kwargs) super().save(*args, **kwargs)
self.vygeneruj_nahled() self.vygeneruj_nahled()

Loading…
Cancel
Save