Korektura s tagy pošle e-mail i orgům, kteří mají zájem o daný tag

This commit is contained in:
Jonas Havelka 2025-06-04 19:31:44 +02:00
parent 9a50805a69
commit 44fbf6832d
5 changed files with 44 additions and 4 deletions

View file

@ -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)

View file

@ -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

View file

@ -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'),
),
]

View file

@ -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

View file

@ -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: