diff --git a/make/test b/make/test index 155d03fa..45de21f1 100755 --- a/make/test +++ b/make/test @@ -6,4 +6,4 @@ set -exuo pipefail ensure_web_installed trap - ERR # Testy nejspíš selžou, ale nechceme kolem toho dělat další chybovou hlášku. -./manage.py test -v2 +./manage.py test -v2 --keepdb "$@" diff --git a/mamweb/settings_local.py b/mamweb/settings_local.py index 540c0453..4d98cd38 100644 --- a/mamweb/settings_local.py +++ b/mamweb/settings_local.py @@ -40,7 +40,10 @@ DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db-local.sqlite3'), - } + 'TEST': { + 'NAME': os.path.join(BASE_DIR, 'db-test.sqlite3'), + }, + }, } #DATABASES = { # 'default': { diff --git a/odevzdavatko/forms.py b/odevzdavatko/forms.py index 8b71cff4..ebed2698 100644 --- a/odevzdavatko/forms.py +++ b/odevzdavatko/forms.py @@ -82,6 +82,13 @@ class NahrajReseniForm(forms.ModelForm): ) } + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + # FIXME Z nějakého důvodu se do této třídy dostaneme i bez resitele + if 'resitele' in self.fields: + # FIXME Mnohem hezčí by to bylo u definice resitele výše, ale nepodařilo se mi to. + self.fields['resitele'].required = False + ReseniSPrilohamiFormSet = inlineformset_factory(m.Reseni,m.PrilohaReseni, form = NahrajReseniForm, fields = ('soubor','res_poznamka'), diff --git a/odevzdavatko/templates/odevzdavatko/detail.html b/odevzdavatko/templates/odevzdavatko/detail.html index 6e6c337b..20cc4842 100644 --- a/odevzdavatko/templates/odevzdavatko/detail.html +++ b/odevzdavatko/templates/odevzdavatko/detail.html @@ -108,7 +108,7 @@ {{ h.body_celkem }} {{ h.body_neprepocitane }} {{ h.body_neprepocitane_celkem }} - {{ h.feedback }} + {{ h.feedback | linebreaks }} {% endfor %} diff --git a/personalni/views.py b/personalni/views.py index d7d52540..a52f7f5f 100644 --- a/personalni/views.py +++ b/personalni/views.py @@ -160,7 +160,7 @@ def resitelEditView(request): if resitel_edit: ## Změny v řešiteli - resitel_edit.prezdivka_resitele = fcd['prezdivka_resitele'] + resitel_edit.prezdivka_resitele = fcd['prezdivka_resitele'] if fcd['prezdivka_resitele'] != '' else None resitel_edit.skola = fcd['skola'] resitel_edit.rok_maturity = fcd['rok_maturity'] resitel_edit.zasilat = fcd['zasilat'] diff --git a/seminar/migrations/0111_nikam2nezasilat_papirove.py b/seminar/migrations/0111_nikam2nezasilat_papirove.py new file mode 100644 index 00000000..683d71d7 --- /dev/null +++ b/seminar/migrations/0111_nikam2nezasilat_papirove.py @@ -0,0 +1,18 @@ +# Generated by Django 2.2.28 on 2023-01-30 19:14 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0110_resitel_prezdivka'), + ] + + operations = [ + migrations.AlterField( + model_name='resitel', + name='zasilat', + field=models.CharField(choices=[('domu', 'Domů'), ('do_skoly', 'Do školy'), ('nikam', 'Nezasílat papírově')], default='domu', max_length=32, verbose_name='kam zasílat'), + ), + ] diff --git a/seminar/models/personalni.py b/seminar/models/personalni.py index 3e64af45..9ac85e51 100644 --- a/seminar/models/personalni.py +++ b/seminar/models/personalni.py @@ -229,7 +229,7 @@ class Resitel(SeminarModelBase): ZASILAT_CHOICES = [ (ZASILAT_DOMU, 'Domů'), (ZASILAT_DO_SKOLY, 'Do školy'), - (ZASILAT_NIKAM, 'Nikam'), + (ZASILAT_NIKAM, 'Nezasílat papírově'), ] zasilat = models.CharField('kam zasílat', max_length=32, choices=ZASILAT_CHOICES, blank=False, default=ZASILAT_DOMU) diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index 7e04b213..f2c10e3e 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -270,21 +270,27 @@ class Cislo(SeminarModelBase): '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 + resitele_vsichni = aktivniResitele(self).filter(zasilat_cislo_emailem=True) + + def posli(text, resitele): + emaily = map(lambda resitel: resitel.osoba.email, resitele) + if not settings.POSLI_MAILOVOU_NOTIFIKACI: + print("Poslal bych upozornění na tyto adresy: ", " ".join(emaily)) + return + + email = EmailMessage( + subject=predmet, + body=text, + from_email=poslat_z_mailu, + bcc=list(emaily) + #bcc = příjemci skryté kopie + ) - email = EmailMessage( - subject=predmet, - body=text_mailu, - from_email=poslat_z_mailu, - bcc=list(emaily) - #bcc = příjemci skryté kopie - ) + email.send() - email.send() + posli(text_mailu, resitele_vsichni.filter(zasilat=pm.Resitel.ZASILAT_NIKAM)) + posli(text_mailu + 'P. S. Také by vám brzy měla přijít papírová verze. 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. Děkujeme. (Čísla vždy můžete nalézt v našem archivu a dál vám budou chodit e-mailem.)\n', + resitele_vsichni.exclude(zasilat=pm.Resitel.ZASILAT_NIKAM)) def save(self, *args, **kwargs): super().save(*args, **kwargs)