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: