Boost admin to the stars!!!
This commit is contained in:
parent
32cb4b1480
commit
a0fb80130f
1 changed files with 86 additions and 49 deletions
135
seminar/admin.py
135
seminar/admin.py
|
@ -5,25 +5,61 @@ import reversion
|
||||||
from solo.admin import SingletonModelAdmin
|
from solo.admin import SingletonModelAdmin
|
||||||
from ckeditor.widgets import CKEditorWidget
|
from ckeditor.widgets import CKEditorWidget
|
||||||
|
|
||||||
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni
|
from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, PrilohaReseni, Nastaveni, Soustredeni, Soustredeni_Ucastnici
|
||||||
import autocomplete_light
|
import autocomplete_light
|
||||||
### Nastaveni
|
|
||||||
|
|
||||||
|
### Globální nastavení
|
||||||
|
|
||||||
admin.site.register(Nastaveni, SingletonModelAdmin)
|
admin.site.register(Nastaveni, SingletonModelAdmin)
|
||||||
|
|
||||||
### Skola
|
|
||||||
|
|
||||||
class SkolaAdmin(reversion.VersionAdmin):
|
### INLINES
|
||||||
fieldsets = [
|
|
||||||
(None, {'fields': ['nazev', 'kratky_nazev', 'je_zs', 'je_ss']}),
|
|
||||||
(u'Interní ID', {'fields': ['aesop_id', 'izo'], 'classes': ['collapse']}),
|
|
||||||
(u'Adresa', {'fields': ['ulice', 'mesto', 'psc', 'stat']}),
|
|
||||||
]
|
|
||||||
list_display = ['nazev', 'aesop_id', 'mesto', 'ulice', 'stat', 'je_zs', 'je_ss']
|
|
||||||
list_filter = ['stat', 'je_zs', 'je_ss']
|
|
||||||
search_fields = ['nazev', 'mesto', 'ulice']
|
|
||||||
|
|
||||||
admin.site.register(Skola, SkolaAdmin)
|
class ResitelInline(admin.TabularInline):
|
||||||
|
model = Resitel
|
||||||
|
fields = ['jmeno', 'prijmeni', 'skola', 'mesto', 'rok_maturity', ]
|
||||||
|
readonly_fields = ['jmeno', 'prijmeni', 'skola', 'mesto', 'rok_maturity', ]
|
||||||
|
extra = 0
|
||||||
|
def has_add_permission(self, req): return False
|
||||||
|
|
||||||
|
|
||||||
|
class CisloInline(admin.TabularInline):
|
||||||
|
model = Cislo
|
||||||
|
fields = ['cislo', 'datum_vydani', 'datum_deadline', 'verejne_db', 'poznamka']
|
||||||
|
readonly_fields = ['cislo']
|
||||||
|
extra = 0
|
||||||
|
def has_add_permission(self, req): return False
|
||||||
|
|
||||||
|
|
||||||
|
class PrilohaReseniInline(admin.StackedInline):
|
||||||
|
model = PrilohaReseni
|
||||||
|
fields = ['timestamp', 'soubor', 'poznamka']
|
||||||
|
readonly_fields = ['timestamp']
|
||||||
|
extra = 0
|
||||||
|
|
||||||
|
|
||||||
|
class ReseniKProblemuInline(admin.TabularInline):
|
||||||
|
form = autocomplete_light.modelform_factory(Reseni, autocomplete_fields=['resitel'], fields=['resitel'])
|
||||||
|
model = Reseni
|
||||||
|
fields = ['resitel', 'forma', 'body', 'cislo_body', 'timestamp', 'poznamka']
|
||||||
|
readonly_fields = ['timestamp']
|
||||||
|
extra = 0
|
||||||
|
|
||||||
|
|
||||||
|
class ReseniKResiteliInline(admin.TabularInline):
|
||||||
|
model = Reseni
|
||||||
|
fields = ['problem', 'forma', 'body', 'cislo_body', 'timestamp', 'poznamka']
|
||||||
|
readonly_fields = ['timestamp', 'problem']
|
||||||
|
extra = 0
|
||||||
|
def has_add_permission(self, req): return False
|
||||||
|
|
||||||
|
|
||||||
|
class Soustredeni_UcastniciInline(admin.TabularInline):
|
||||||
|
form = autocomplete_light.modelform_factory(Soustredeni_Ucastnici, autocomplete_fields=['resitel'], fields=['resitel'])
|
||||||
|
model = Soustredeni_Ucastnici
|
||||||
|
fields = ['resitel', 'poznamka', ]
|
||||||
|
extra = 0
|
||||||
|
|
||||||
|
|
||||||
### Resitel
|
### Resitel
|
||||||
|
@ -40,15 +76,33 @@ class ResitelAdmin(reversion.VersionAdmin):
|
||||||
list_display = ['jmeno', 'prijmeni', 'user', 'pohlavi_muz', 'skola', 'rok_maturity']
|
list_display = ['jmeno', 'prijmeni', 'user', 'pohlavi_muz', 'skola', 'rok_maturity']
|
||||||
list_filter = ['pohlavi_muz', 'rok_maturity', 'zasilat']
|
list_filter = ['pohlavi_muz', 'rok_maturity', 'zasilat']
|
||||||
search_fields = ['jmeno', 'prijmeni', 'ulice', 'user', 'mesto', 'email']
|
search_fields = ['jmeno', 'prijmeni', 'ulice', 'user', 'mesto', 'email']
|
||||||
|
inlines = [ReseniKResiteliInline]
|
||||||
|
|
||||||
admin.site.register(Resitel, ResitelAdmin)
|
admin.site.register(Resitel, ResitelAdmin)
|
||||||
|
|
||||||
|
|
||||||
|
### Skola
|
||||||
|
|
||||||
|
class SkolaAdmin(reversion.VersionAdmin):
|
||||||
|
fieldsets = [
|
||||||
|
(None, {'fields': ['nazev', 'kratky_nazev', 'je_zs', 'je_ss']}),
|
||||||
|
(u'Interní ID', {'fields': ['aesop_id', 'izo'], 'classes': ['collapse']}),
|
||||||
|
(u'Adresa', {'fields': ['ulice', 'mesto', 'psc', 'stat']}),
|
||||||
|
(None, {'fields': ['poznamka']}),
|
||||||
|
]
|
||||||
|
list_display = ['nazev', 'aesop_id', 'mesto', 'ulice', 'stat', 'je_zs', 'je_ss']
|
||||||
|
list_filter = ['stat', 'je_zs', 'je_ss']
|
||||||
|
search_fields = ['nazev', 'mesto', 'ulice']
|
||||||
|
inlines = [ResitelInline]
|
||||||
|
|
||||||
|
admin.site.register(Skola, SkolaAdmin)
|
||||||
|
|
||||||
|
|
||||||
### Cislo
|
### Cislo
|
||||||
|
|
||||||
class CisloAdmin(reversion.VersionAdmin):
|
class CisloAdmin(reversion.VersionAdmin):
|
||||||
fieldsets = [
|
fieldsets = [
|
||||||
(None, {'fields': ['cislo', 'rocnik', 'verejne_db']}),
|
(None, {'fields': ['cislo', 'rocnik', 'verejne_db', 'poznamka']}),
|
||||||
(u'Data', {'fields': ['datum_vydani', 'datum_deadline']}),
|
(u'Data', {'fields': ['datum_vydani', 'datum_deadline']}),
|
||||||
]
|
]
|
||||||
list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne']
|
list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne']
|
||||||
|
@ -57,12 +111,6 @@ class CisloAdmin(reversion.VersionAdmin):
|
||||||
|
|
||||||
admin.site.register(Cislo, CisloAdmin)
|
admin.site.register(Cislo, CisloAdmin)
|
||||||
|
|
||||||
class CisloInline(admin.StackedInline):
|
|
||||||
model = Cislo
|
|
||||||
fields = ['cislo', 'datum_vydani', 'datum_deadline', 'verejne']
|
|
||||||
readonly_fields = ['cislo']
|
|
||||||
extra = 0
|
|
||||||
|
|
||||||
|
|
||||||
### Rocnik
|
### Rocnik
|
||||||
|
|
||||||
|
@ -78,30 +126,24 @@ admin.site.register(Rocnik, RocnikAdmin)
|
||||||
|
|
||||||
|
|
||||||
### PrilohaReseni
|
### PrilohaReseni
|
||||||
|
# NOTE: Nemá pravděpodobně smysl používat
|
||||||
class PrilohaReseniAdmin(reversion.VersionAdmin):
|
# class PrilohaReseniAdmin(reversion.VersionAdmin):
|
||||||
readonly_fields = ['timestamp', 'reseni']
|
# readonly_fields = ['timestamp', 'reseni']
|
||||||
fieldsets = [
|
# fieldsets = [
|
||||||
(None, {'fields': ['reseni', 'soubor', 'timestamp']}),
|
# (None, {'fields': ['reseni', 'soubor', 'timestamp']}),
|
||||||
(u'Poznámky', {'fields': ['poznamka']}),
|
# (u'Poznámky', {'fields': ['poznamka']}),
|
||||||
]
|
# ]
|
||||||
list_display = ['reseni', 'soubor', 'timestamp']
|
# list_display = ['reseni', 'soubor', 'timestamp']
|
||||||
list_filter = ['reseni', 'timestamp']
|
# list_filter = ['reseni', 'timestamp']
|
||||||
search_fields = []
|
# search_fields = []
|
||||||
|
#
|
||||||
admin.site.register(PrilohaReseni, PrilohaReseniAdmin)
|
# admin.site.register(PrilohaReseni, PrilohaReseniAdmin)
|
||||||
|
|
||||||
class PrilohaReseniInline(admin.StackedInline):
|
|
||||||
model = PrilohaReseni
|
|
||||||
fields = ['timestamp', 'soubor', 'poznamka']
|
|
||||||
readonly_fields = ['timestamp']
|
|
||||||
extra = 1
|
|
||||||
|
|
||||||
|
|
||||||
### Reseni
|
### Reseni
|
||||||
|
|
||||||
class ReseniAdmin(reversion.VersionAdmin):
|
class ReseniAdmin(reversion.VersionAdmin):
|
||||||
form = autocomplete_light.modelform_factory(Reseni, autocomplete_fields=['problem'], fields=['problem'])
|
form = autocomplete_light.modelform_factory(Reseni, autocomplete_fields=['problem', 'resitel'], fields=['problem', 'resitel'])
|
||||||
fieldsets = [
|
fieldsets = [
|
||||||
(None, {'fields': ['problem', 'resitel', 'forma', 'body', 'cislo_body', 'timestamp']}),
|
(None, {'fields': ['problem', 'resitel', 'forma', 'body', 'cislo_body', 'timestamp']}),
|
||||||
(u'Poznámky', {'fields': ['poznamka']}),
|
(u'Poznámky', {'fields': ['poznamka']}),
|
||||||
|
@ -114,12 +156,6 @@ class ReseniAdmin(reversion.VersionAdmin):
|
||||||
|
|
||||||
admin.site.register(Reseni, ReseniAdmin)
|
admin.site.register(Reseni, ReseniAdmin)
|
||||||
|
|
||||||
class ReseniInline(admin.TabularInline):
|
|
||||||
model = Reseni
|
|
||||||
fields = ['resitel', 'forma', 'body', 'cislo_body', 'timestamp', 'poznamka']
|
|
||||||
readonly_fields = ['poznamka', 'resitel', 'timestamp', 'cislo_body', 'resitel', 'forma']
|
|
||||||
extra = 0
|
|
||||||
|
|
||||||
|
|
||||||
### Problem
|
### Problem
|
||||||
|
|
||||||
|
@ -135,15 +171,15 @@ class ProblemAdmin(reversion.VersionAdmin):
|
||||||
form = ProblemAdminForm
|
form = ProblemAdminForm
|
||||||
fieldsets = [
|
fieldsets = [
|
||||||
(None, {'fields': ['nazev', 'typ', 'stav', 'autor', 'zamereni', 'body', 'timestamp']}),
|
(None, {'fields': ['nazev', 'typ', 'stav', 'autor', 'zamereni', 'body', 'timestamp']}),
|
||||||
(u'Vydání', {'fields': ['cislo_zadani', 'kod', 'cislo_reseni', 'opravovatel']}),
|
(u'Vydání', {'fields': ['cislo_zadani', 'kod', 'cislo_reseni', 'opravovatel', 'text_problemu']}),
|
||||||
(u'Texty', {'fields': ['text_problemu', 'text_problemu_org']}),
|
(None, {'fields': ['text_problemu_org']}),
|
||||||
]
|
]
|
||||||
readonly_fields = ['timestamp']
|
readonly_fields = ['timestamp']
|
||||||
list_display = ['nazev', 'typ', 'kod', 'stav', 'autor', 'opravovatel', 'verejne', 'cislo_zadani']
|
list_display = ['nazev', 'typ', 'kod', 'stav', 'autor', 'opravovatel', 'verejne', 'cislo_zadani']
|
||||||
list_select_related = True
|
list_select_related = True
|
||||||
list_filter = ['typ', 'stav', 'timestamp']
|
list_filter = ['typ', 'stav', 'timestamp']
|
||||||
search_fields = ['nazev', 'kod', 'text_problemu_org', 'text_problemu']
|
search_fields = ['nazev', 'kod', 'text_problemu_org', 'text_problemu']
|
||||||
inlines = [ReseniInline]
|
inlines = [ReseniKProblemuInline]
|
||||||
view_on_site = Problem.verejne_url
|
view_on_site = Problem.verejne_url
|
||||||
|
|
||||||
admin.site.register(Problem, ProblemAdmin)
|
admin.site.register(Problem, ProblemAdmin)
|
||||||
|
@ -157,8 +193,9 @@ class SoustredeniAdmin(reversion.VersionAdmin):
|
||||||
(u'Data', {'fields': ['datum_zacatku', 'datum_konce']}),
|
(u'Data', {'fields': ['datum_zacatku', 'datum_konce']}),
|
||||||
]
|
]
|
||||||
list_display = ['rocnik', 'misto', 'datum_zacatku', 'verejne']
|
list_display = ['rocnik', 'misto', 'datum_zacatku', 'verejne']
|
||||||
|
inlines = [Soustredeni_UcastniciInline]
|
||||||
list_filter = ['rocnik']
|
list_filter = ['rocnik']
|
||||||
view_on_site = Soustredeni.verejne_url
|
view_on_site = Soustredeni.verejne_url
|
||||||
# TODO: UcastNaSoustredeni jako inline
|
|
||||||
|
|
||||||
admin.site.register(Soustredeni, SoustredeniAdmin)
|
admin.site.register(Soustredeni, SoustredeniAdmin)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue