Web M&M
https://mam.matfyz.cz
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
100 lines
2.7 KiB
100 lines
2.7 KiB
from django.contrib import admin
|
|
from django.db import models
|
|
from django.forms import widgets
|
|
|
|
from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin, PolymorphicChildModelFilter
|
|
|
|
from .models import TreeNode, RocnikNode, CisloNode, MezicisloNode, TemaVCisleNode, UlohaZadaniNode, PohadkaNode, UlohaVzorakNode, TextNode, CastNode, OrgTextNode
|
|
from .models import Text, Obrazek
|
|
|
|
# Polymorfismus pro stromy
|
|
# TODO: Inlines podle https://django-polymorphic.readthedocs.io/en/stable/admin.html
|
|
|
|
@admin.register(TreeNode)
|
|
class TreeNodeAdmin(PolymorphicParentModelAdmin):
|
|
base_model = TreeNode
|
|
child_models = [
|
|
RocnikNode,
|
|
CisloNode,
|
|
MezicisloNode,
|
|
TemaVCisleNode,
|
|
UlohaZadaniNode,
|
|
PohadkaNode,
|
|
UlohaVzorakNode,
|
|
TextNode,
|
|
CastNode,
|
|
OrgTextNode,
|
|
]
|
|
|
|
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(RocnikNode)
|
|
class RocnikNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = RocnikNode
|
|
show_in_index = True
|
|
|
|
@admin.register(CisloNode)
|
|
class CisloNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = CisloNode
|
|
show_in_index = True
|
|
|
|
@admin.register(MezicisloNode)
|
|
class MezicisloNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = MezicisloNode
|
|
show_in_index = True
|
|
|
|
@admin.register(TemaVCisleNode)
|
|
class TemaVCisleNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = TemaVCisleNode
|
|
show_in_index = True
|
|
|
|
@admin.register(UlohaZadaniNode)
|
|
class UlohaZadaniNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = UlohaZadaniNode
|
|
show_in_index = True
|
|
|
|
@admin.register(PohadkaNode)
|
|
class PohadkaNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = PohadkaNode
|
|
show_in_index = True
|
|
|
|
@admin.register(UlohaVzorakNode)
|
|
class UlohaVzorakNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = UlohaVzorakNode
|
|
show_in_index = True
|
|
|
|
@admin.register(TextNode)
|
|
class TextNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = TextNode
|
|
show_in_index = True
|
|
|
|
@admin.register(CastNode)
|
|
class TextNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = CastNode
|
|
show_in_index = True
|
|
fields = ('nadpis',)
|
|
|
|
@admin.register(OrgTextNode)
|
|
class TextNodeAdmin(PolymorphicChildModelAdmin):
|
|
base_model = OrgTextNode
|
|
show_in_index = True
|
|
|
|
|
|
class TextAdminInline(admin.TabularInline):
|
|
model = Text
|
|
formfield_overrides = {
|
|
models.TextField: {'widget': widgets.TextInput}
|
|
}
|
|
exclude = ['text_zkraceny_set', 'text_zkraceny']
|
|
|
|
admin.site.register(Text)
|
|
admin.site.register(Obrazek)
|
|
|