105 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			105 lines
		
	
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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, ReseniNode
 | |
| 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,
 | |
| 		ReseniNode,
 | |
| 	]
 | |
| 
 | |
| 	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
 | |
| 
 | |
| @admin.register(ReseniNode)
 | |
| class ReseniNodeAdmin(PolymorphicChildModelAdmin):
 | |
| 	base_model = ReseniNode
 | |
| 	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)
 |