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)