From 44fbf6832d21ce522512928d4447d0c89e9699da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jon=C3=A1=C5=A1=20Havelka?= Date: Wed, 4 Jun 2025 19:31:44 +0200 Subject: [PATCH] =?UTF-8?q?Korektura=20s=20tagy=20po=C5=A1le=20e-mail=20i?= =?UTF-8?q?=20org=C5=AFm,=20kte=C5=99=C3=AD=20maj=C3=AD=20z=C3=A1jem=20o?= =?UTF-8?q?=20dan=C3=BD=20tag?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- korektury/admin.py | 7 ++++++- korektury/api/views.py | 8 +++++--- .../0029_korekturatag_informovani_orgove.py | 19 +++++++++++++++++++ korektury/models.py | 7 +++++++ korektury/utils.py | 7 +++++++ 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 korektury/migrations/0029_korekturatag_informovani_orgove.py diff --git a/korektury/admin.py b/korektury/admin.py index aad8fd20..5a5ccfb8 100644 --- a/korektury/admin.py +++ b/korektury/admin.py @@ -68,5 +68,10 @@ class OpravaAdmin(admin.ModelAdmin): model = Oprava filter_horizontal = ("informovani_orgove", "tagy",) + +class KorekturaTagAdmin(admin.ModelAdmin): + model = KorekturaTag + filter_horizontal = ("informovani_orgove", ) + admin.site.register(Oprava, OpravaAdmin) -admin.site.register(KorekturaTag) +admin.site.register(KorekturaTag, KorekturaTagAdmin) diff --git a/korektury/api/views.py b/korektury/api/views.py index 94620b2d..1d0efa25 100644 --- a/korektury/api/views.py +++ b/korektury/api/views.py @@ -118,9 +118,6 @@ def opravy_a_komentare_view(request, pdf_id: int, **kwargs): y=y, ) - Komentar.objects.create(oprava=oprava, autor=autor, text=text) - send_email_notification_komentar(oprava, autor, request) - tagy_raw = q.get('tagy') if tagy_raw is not None: oprava.tagy.clear() @@ -128,6 +125,11 @@ def opravy_a_komentare_view(request, pdf_id: int, **kwargs): tagy = list(map(int, tagy_raw.split(","))) oprava.tagy.add(*KorekturaTag.objects.filter(id__in=tagy)) + # Pokud je korektura/komentář nová/-ý + if komentar_id == -1: + Komentar.objects.create(oprava=oprava, autor=autor, text=text) + send_email_notification_komentar(oprava, autor, request) + opravy = Oprava.objects.filter(pdf=pdf_id).all() # Serializovat list je prý security vulnerability, tedy je přidán slovník pro bezpečnost diff --git a/korektury/migrations/0029_korekturatag_informovani_orgove.py b/korektury/migrations/0029_korekturatag_informovani_orgove.py new file mode 100644 index 00000000..1902218f --- /dev/null +++ b/korektury/migrations/0029_korekturatag_informovani_orgove.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.16 on 2025-06-04 17:17 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('personalni', '0019_rename_upozorneni_resitel_upozornovat_na_opravy_reseni'), + ('korektury', '0028_alter_korekturovanepdf_options_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='korekturatag', + name='informovani_orgove', + field=models.ManyToManyField(blank=True, default=None, help_text='Orgové informovaní při přidání komentáře ke korektuře s daným tagem', related_name='informovan_o_tagu', to='personalni.organizator', verbose_name='Informovaní organizátoři'), + ), + ] diff --git a/korektury/models.py b/korektury/models.py index e8698593..5d10850a 100644 --- a/korektury/models.py +++ b/korektury/models.py @@ -138,6 +138,13 @@ class KorekturaTag(models.Model): nazev = models.CharField("název tagu", blank = False, max_length=20, help_text="Název daného tagu, <20 znaků") barva = ColorField("barva daného tagu", default="#FFFFFF") + informovani_orgove = models.ManyToManyField( + Organizator, blank=True, default=None, + verbose_name='Informovaní organizátoři', + help_text="Orgové informovaní při přidání komentáře ke korektuře s daným tagem", + related_name='informovan_o_tagu', + ) + def __str__(self): return self.nazev diff --git a/korektury/utils.py b/korektury/utils.py index 578e0a1d..9a32e8d8 100644 --- a/korektury/utils.py +++ b/korektury/utils.py @@ -40,6 +40,13 @@ def send_email_notification_komentar(oprava: Oprava, autor: Organizator, request if email_zobpovedny: emails.add(email_zobpovedny) + # orgove informovaní při korektuře + for tag in oprava.tagy.all(): + for org in tag.informovani_orgove.all(): + email_informovany = org.osoba.email + if email_informovany: + emails.add(email_informovany) + # odstran e-mail autora opravy email = autor.osoba.email if email: -- 2.39.5