diff --git a/korektury/admin.py b/korektury/admin.py index a04026de..3888dc4c 100644 --- a/korektury/admin.py +++ b/korektury/admin.py @@ -25,12 +25,13 @@ class KorekturovanePDFAdmin(VersionAdmin): fieldsets = [ (None, {'fields': - ['pdf', 'cas', 'org', 'stran', 'nazev', 'komentar', 'poslat_mail']}), + ['pdf', 'cas', 'stran', 'nazev', 'orgove', 'komentar', 'poslat_mail']}), # (u'PDF', {'fields': ['pdf']}), ] - list_display = ['nazev', 'cas', 'stran', 'org'] + list_display = ['nazev', 'cas', 'stran'] list_filter = [] search_fields = [] + autocomplete_fields = ['orgove'] def save_model(self, request, obj, form, change): """ diff --git a/korektury/migrations/0024_vic_orgu_k_pdf.py b/korektury/migrations/0024_vic_orgu_k_pdf.py new file mode 100644 index 00000000..96af9d93 --- /dev/null +++ b/korektury/migrations/0024_vic_orgu_k_pdf.py @@ -0,0 +1,41 @@ +# Generated by Django 4.2.13 on 2024-06-11 23:53 + +from django.db import migrations, models + +def pridej_orgy(apps, schema_editor): + PDF = apps.get_model('korektury', 'KorekturovanePDF') + for pdf in PDF.objects.all(): # Tohle by asi mělo jít udělat pomocí update, ale moc práce a rychlé hledání taky nepomohlo. + if pdf.org is not None: pdf.orgove.add(pdf.org) + pdf.save() # ig? + +def vyber_orga(apps, schema_editor): + PDF = apps.get_model('korektury', 'KorekturovanePDF') + for pdf in PDF.objects.all(): + orgove = pdf.orgove.all() + if len(orgove) > 1: + raise migrations.exceptions.IrreversibleError(f'PDF {pdf.id} má víc než jednoho zodpovědného orga, nejde odmigrovat na verzi, která umí jen jednoho.') + if len(orgove) == 0: + pdf.org = None + else: + pdf.org = orgove[0] + pdf.save() + +class Migration(migrations.Migration): + + dependencies = [ + ('personalni', '0011_osloveni_vsechny_choices'), + ('korektury', '0023_personalni_post_migrate'), + ] + + operations = [ + migrations.AddField( + model_name='korekturovanepdf', + name='orgove', + field=models.ManyToManyField(blank=True, default=None, help_text='Zodpovědní organizátoři za obsah (chodí jim maily o nových korekturách)', to='personalni.organizator'), + ), + migrations.RunPython(pridej_orgy, vyber_orga), + migrations.RemoveField( + model_name='korekturovanepdf', + name='org', + ), + ] diff --git a/korektury/models.py b/korektury/models.py index 153c4f3c..6a87f2d9 100644 --- a/korektury/models.py +++ b/korektury/models.py @@ -26,7 +26,6 @@ def generate_filename(self, filename): clean) return os.path.join(settings.KOREKTURY_PDF_DIR, fname) - #@reversion.register(ignore_duplicates=True) class KorekturovanePDF(models.Model): class Meta: @@ -46,9 +45,9 @@ class KorekturovanePDF(models.Model): pdf = models.FileField(u'PDF', upload_to = generate_filename) - org = models.ForeignKey(Organizator, blank=True, - help_text='Zodpovědný organizátor za obsah', - null=True, default=None, on_delete=models.SET_NULL) + orgove = models.ManyToManyField(Organizator, blank=True, + help_text='Zodpovědní organizátoři za obsah (chodí jim maily o nových korekturách)', + default=None) stran = models.IntegerField(u'počet stran', help_text='Počet stran PDF', default=0) diff --git a/korektury/views.py b/korektury/views.py index ee6f2841..08854d95 100644 --- a/korektury/views.py +++ b/korektury/views.py @@ -183,9 +183,9 @@ class KorekturyView(generic.TemplateView): if email_komentujiciho: emails.add(email_komentujiciho) - # zodpovedny org - if oprava.pdf.org: - email_zobpovedny = oprava.pdf.org.osoba.email + # zodpovedni orgove + for org in oprava.pdf.orgove.all(): + email_zobpovedny = org.osoba.email if email_zobpovedny: emails.add(email_zobpovedny)