from django.contrib import admin from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin, PolymorphicChildModelFilter from reversion.admin import VersionAdmin from django_reverse_admin import ReverseModelAdmin # Todo: reversion import seminar.models as m admin.site.register(m.Skola) admin.site.register(m.Prijemce) admin.site.register(m.Rocnik) admin.site.register(m.Cislo) admin.site.register(m.Organizator) admin.site.register(m.Soustredeni) @admin.register(m.Osoba) class OsobaAdmin(admin.ModelAdmin): actions = ['synchronizuj_maily'] def synchronizuj_maily(self, request, queryset): for o in queryset: if o.user is not None: u = o.user u.email = o.email u.save() self.message_user(request, "E-maily synchronizovány.") synchronizuj_maily.short_description = "Synchronizuj vybraným osobám e-maily do uživatelů" @admin.register(m.Problem) class ProblemAdmin(PolymorphicParentModelAdmin): base_model = m.Problem child_models = [ m.Tema, m.Clanek, m.Uloha, m.Konfera, ] @admin.register(m.Tema) class TemaAdmin(PolymorphicChildModelAdmin): base_model = m.Tema show_in_index = True @admin.register(m.Clanek) class ClanekAdmin(PolymorphicChildModelAdmin): base_model = m.Clanek show_in_index = True @admin.register(m.Uloha) class UlohaAdmin(PolymorphicChildModelAdmin): base_model = m.Uloha show_in_index = True @admin.register(m.Konfera) class KonferaAdmin(PolymorphicChildModelAdmin): base_model = m.Konfera show_in_index = True class TextAdminInline(admin.TabularInline): model = m.Text exclude = ['text_zkraceny_set','text_zkraceny'] admin.site.register(m.Text) class ResitelInline(admin.TabularInline): model = m.Resitel extra = 1 admin.site.register(m.Resitel) class PrilohaReseniInline(admin.TabularInline): model = m.PrilohaReseni extra = 1 admin.site.register(m.PrilohaReseni) class Reseni_ResiteleInline(admin.TabularInline): model = m.Reseni_Resitele @admin.register(m.Reseni) class ReseniAdmin(ReverseModelAdmin): base_model = m.Reseni inline_type = 'tabular' inline_reverse = ['text_cely','resitele'] exclude = ['text_zkraceny', 'text_zkraceny_set'] inlines = [PrilohaReseniInline] # FAIL in template # inlines = [PrilohaReseniInline,Reseni_ResiteleInline] admin.site.register(m.Hodnoceni) admin.site.register(m.Pohadka) admin.site.register(m.Obrazek) # Polymorfismus pro stromy # TODO: Inlines podle https://django-polymorphic.readthedocs.io/en/stable/admin.html @admin.register(m.TreeNode) class TreeNodeAdmin(PolymorphicParentModelAdmin): base_model = m.TreeNode child_models = [ m.RocnikNode, m.CisloNode, m.MezicisloNode, m.TemaVCisleNode, m.UlohaZadaniNode, m.PohadkaNode, m.UlohaVzorakNode, m.TextNode, ] actions = ['aktualizuj_nazvy'] # XXX: nejspíš je to totální DB HOG, nechcete to použít moc často. def aktualizuj_nazvy(self, request, queryset): newqs = queryset.get_real_instances() for tn in newqs: tn.aktualizuj_nazev() tn.save() self.message_user(request, "Názvy aktualizovány.") aktualizuj_nazvy.short_description = "Aktualizuj vybraným TreeNodům názvy" @admin.register(m.RocnikNode) class RocnikNodeAdmin(PolymorphicChildModelAdmin): base_model = m.RocnikNode show_in_index = True @admin.register(m.CisloNode) class CisloNodeAdmin(PolymorphicChildModelAdmin): base_model = m.CisloNode show_in_index = True @admin.register(m.MezicisloNode) class MezicisloNodeAdmin(PolymorphicChildModelAdmin): base_model = m.MezicisloNode show_in_index = True @admin.register(m.TemaVCisleNode) class TemaVCisleNodeAdmin(PolymorphicChildModelAdmin): base_model = m.TemaVCisleNode show_in_index = True @admin.register(m.UlohaZadaniNode) class UlohaZadaniNodeAdmin(PolymorphicChildModelAdmin): base_model = m.UlohaZadaniNode show_in_index = True @admin.register(m.PohadkaNode) class PohadkaNodeAdmin(PolymorphicChildModelAdmin): base_model = m.PohadkaNode show_in_index = True @admin.register(m.UlohaVzorakNode) class UlohaVzorakNodeAdmin(PolymorphicChildModelAdmin): base_model = m.UlohaVzorakNode show_in_index = True @admin.register(m.TextNode) class TextNodeAdmin(PolymorphicChildModelAdmin): base_model = m.TextNode show_in_index = True admin.site.register(m.Nastaveni) admin.site.register(m.Novinky)