From c97a84104169de9540bf2483482eb75b04c71dfc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Mon, 13 Mar 2023 23:45:05 +0100 Subject: [PATCH] =?UTF-8?q?Reforma=20nastaven=C3=AD=20zas=C3=ADl=C3=A1n?= =?UTF-8?q?=C3=AD=20po=C5=A1tou?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- personalni/views.py | 7 +++- .../0112_resitel_zasilat_cislo_papirove.py | 42 +++++++++++++++++++ seminar/models/personalni.py | 2 + seminar/models/tvorba.py | 4 +- seminar/templates/seminar/archiv/obalky.tex | 2 + seminar/utils.py | 2 +- 6 files changed, 54 insertions(+), 5 deletions(-) create mode 100644 seminar/migrations/0112_resitel_zasilat_cislo_papirove.py diff --git a/personalni/views.py b/personalni/views.py index a52f7f5f..df1cb8f1 100644 --- a/personalni/views.py +++ b/personalni/views.py @@ -165,6 +165,7 @@ def resitelEditView(request): resitel_edit.rok_maturity = fcd['rok_maturity'] resitel_edit.zasilat = fcd['zasilat'] resitel_edit.zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'] + resitel_edit.zasilat_cislo_papirove = fcd['zasilat_cislo_papirove'] if fcd.get('skola'): resitel_edit.skola = fcd['skola'] else: @@ -267,7 +268,8 @@ def prihlaskaView(request): prezdivka_resitele=fcd['prezdivka_resitele'], rok_maturity = fcd['rok_maturity'], zasilat = fcd['zasilat'], - zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'] + zasilat_cislo_emailem = fcd['zasilat_cislo_emailem'], + zasilat_cislo_papirove = fcd['zasilat_cislo_papirove'], ) if fcd.get('skola'): @@ -284,7 +286,7 @@ def prihlaskaView(request): except m.Resitel.DoesNotExist: # Stejný trik: orig_resitel = r - resitel_attrs = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem'] + resitel_attrs = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', 'zasilat_cislo_papirove'] for attr in resitel_attrs: new = getattr(r, attr) old = getattr(orig_resitel, attr) @@ -345,6 +347,7 @@ def dataResiteluCsvResponse(queryset, columns=None, with_header=True): 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', + 'zasilat_cislo_papirove', 'osoba__datum_registrace', 'osoba__datum_souhlasu_udaje', 'osoba__datum_souhlasu_zasilani', diff --git a/seminar/migrations/0112_resitel_zasilat_cislo_papirove.py b/seminar/migrations/0112_resitel_zasilat_cislo_papirove.py new file mode 100644 index 00000000..63660ddc --- /dev/null +++ b/seminar/migrations/0112_resitel_zasilat_cislo_papirove.py @@ -0,0 +1,42 @@ +# Generated by Django 2.2.28 on 2023-03-13 22:02 + +from django.db import migrations, models + +ZASILAT_DOMU = 'domu' +ZASILAT_DO_SKOLY = 'do_skoly' +ZASILAT_NIKAM = 'nikam' + + +def default_zasilat_papirove(apps, schema_editor): + Resitel = apps.get_model('seminar', 'Resitel') + + for resitel in Resitel.objects.all(): + resitel.zasilat_cislo_papirove = resitel.zasilat != ZASILAT_NIKAM + if resitel.zasilat == ZASILAT_NIKAM: + resitel.zasilat = ZASILAT_DOMU if resitel.osoba.ulice else ZASILAT_DO_SKOLY + resitel.save() + + +def vrat_nikam(apps, schema_editor): + Resitel = apps.get_model('seminar', 'Resitel') + + for resitel in Resitel.objects.all(): + if not resitel.zasilat_cislo_papirove: + resitel.zasilat = ZASILAT_NIKAM + resitel.save() + + +class Migration(migrations.Migration): + + dependencies = [ + ('seminar', '0111_nikam2nezasilat_papirove'), + ] + + operations = [ + migrations.AddField( + model_name='resitel', + name='zasilat_cislo_papirove', + field=models.BooleanField(default=True, help_text='True pokud chce řešitel dostávat číslo papírově', verbose_name='zasílat číslo papírově'), + ), + migrations.RunPython(default_zasilat_papirove, vrat_nikam), + ] diff --git a/seminar/models/personalni.py b/seminar/models/personalni.py index 9ac85e51..205c9f4a 100644 --- a/seminar/models/personalni.py +++ b/seminar/models/personalni.py @@ -236,6 +236,8 @@ class Resitel(SeminarModelBase): zasilat_cislo_emailem = models.BooleanField('zasílat číslo emailem', help_text='True pokud chce řešitel dostávat číslo emailem', default=False) + zasilat_cislo_papirove = models.BooleanField('zasílat číslo papírově', help_text='True pokud chce řešitel dostávat číslo papírově', default=True) + poznamka = models.TextField('neveřejná poznámka', blank=True, help_text='Neveřejná poznámka k řešiteli (plain text)') diff --git a/seminar/models/tvorba.py b/seminar/models/tvorba.py index f2feb569..af21e587 100644 --- a/seminar/models/tvorba.py +++ b/seminar/models/tvorba.py @@ -290,9 +290,9 @@ class Cislo(SeminarModelBase): paticka = "---\nK odběru těchto e-mailů jste se přihlásili na stránkách https://mam.matfyz.cz. Z odběru se lze odhlásit na https://mam.matfyz.cz/resitel/osobni-udaje/" - posli(text_mailu + paticka, resitele_vsichni.filter(zasilat=pm.Resitel.ZASILAT_NIKAM)) + posli(text_mailu + paticka, resitele_vsichni.filter(zasilat=pm.Resitel.zasilat_cislo_papirove)) 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_cislo_papirove)) def save(self, *args, **kwargs): super().save(*args, **kwargs) diff --git a/seminar/templates/seminar/archiv/obalky.tex b/seminar/templates/seminar/archiv/obalky.tex index ba18d318..9ae62121 100644 --- a/seminar/templates/seminar/archiv/obalky.tex +++ b/seminar/templates/seminar/archiv/obalky.tex @@ -100,6 +100,7 @@ {% with o=r.osoba %} {% with s=r.skola %} {% spaceless %} + {% if r.zasilat_cislo_papirove %} {% if r.zasilat == "do_skoly" %} {% if o.stat == "CZ" %} \obalka{{o.jmeno|sloz}}{{o.prijmeni|sloz}}{{s.nazev|sloz}}{{s.ulice|sloz}}{{s.psc|sloz}}{{s.mesto|sloz}}{{''|sloz}} @@ -115,6 +116,7 @@ {% endif %} {% else %} {% endif %} + {% endif %} {% endspaceless %} {% endwith %} {% endwith %} diff --git a/seminar/utils.py b/seminar/utils.py index e7d52529..e10920b8 100644 --- a/seminar/utils.py +++ b/seminar/utils.py @@ -265,7 +265,7 @@ def merge_resitele(cilovy, zdrojovy): # Postup: # Sjednotit / upravit informace cílového řešitele print('Upravuji data modelu') - fieldy_shoda = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem'] + fieldy_shoda = ['skola', 'rok_maturity', 'zasilat', 'zasilat_cislo_emailem', 'zasilat_cislo_papirove'] for f in fieldy_shoda: zf = getattr(zdrojovy, f)