Umožnění rozdílu mezi autory komentářů a orgy informovanými při přidání komentáře

This commit is contained in:
Jonas Havelka 2025-02-11 15:44:39 +01:00
parent befb013e58
commit 6bfeab0a5a
4 changed files with 49 additions and 5 deletions

View file

@ -62,4 +62,10 @@ Korekturovátko
).send() ).send()
admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin) admin.site.register(KorekturovanePDF, KorekturovanePDFAdmin)
admin.site.register(Oprava)
class OpravaAdmin(admin.ModelAdmin):
model = Oprava
filter_horizontal = ("informovani_orgove", )
admin.site.register(Oprava, OpravaAdmin)

View file

@ -0,0 +1,29 @@
# Generated by Django 4.2.16 on 2025-02-11 14:28
from django.db import migrations, models
def pridani_orgu(apps, _schema_editor):
Komentar = apps.get_model('korektury','Komentar')
for komentar in Komentar.objects.all():
org = komentar.autor
if org is not None:
# Tohle jde asi udělat lépe než .all(…). Ale nejhorší na tom je, že .add(…) funguje jinak tady v migracích.
if org not in komentar.oprava.informovani_orgove.all():
komentar.oprava.informovani_orgove.add(org)
class Migration(migrations.Migration):
dependencies = [
('personalni', '0019_rename_upozorneni_resitel_upozornovat_na_opravy_reseni'),
('korektury', '0025_remove_oprava_autor_remove_oprava_text'),
]
operations = [
migrations.AddField(
model_name='oprava',
name='informovani_orgove',
field=models.ManyToManyField(blank=True, default=None, help_text='Orgové informovaní při přidání komentáře ke korektuře', related_name='informovan_o_opravach', to='personalni.organizator', verbose_name='Informovaní organizátoři'),
),
migrations.RunPython(pridani_orgu, migrations.RunPython.noop),
]

View file

@ -157,6 +157,13 @@ class Oprava(models.Model):
status = models.CharField(u'stav opravy',max_length=16, choices=STATUS.choices, blank=False, default = STATUS.K_OPRAVE) status = models.CharField(u'stav opravy',max_length=16, choices=STATUS.choices, blank=False, default = STATUS.K_OPRAVE)
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",
related_name='informovan_o_opravach',
)
@reversion.register(ignore_duplicates=True) @reversion.register(ignore_duplicates=True)
class Komentar(models.Model): class Komentar(models.Model):
@ -181,5 +188,7 @@ class Komentar(models.Model):
def __str__(self): def __str__(self):
return '{} od {}: {}'.format(self.cas,self.autor,self.text) return '{} od {}: {}'.format(self.cas,self.autor,self.text)
def save(self, *args, **kwargs):
super().save(*args, **kwargs)
if self.autor is not None:
self.oprava.informovani_orgove.add(self.autor)

View file

@ -29,8 +29,8 @@ def send_email_notification_komentar(oprava: Oprava, autor: Organizator, request
emails = set() emails = set()
# nalezeni e-mailu na autory komentaru # nalezeni e-mailu na autory komentaru
for komentar in oprava.komentar_set.all(): for org in oprava.informovani_orgove.all():
email_komentujiciho = komentar.autor.osoba.email email_komentujiciho = org.osoba.email
if email_komentujiciho: if email_komentujiciho:
emails.add(email_komentujiciho) emails.add(email_komentujiciho)