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 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
|
||||
### Nastaveni
|
||||
|
||||
|
||||
### Globální nastavení
|
||||
|
||||
admin.site.register(Nastaveni, SingletonModelAdmin)
|
||||
|
||||
### 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']}),
|
||||
]
|
||||
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
|
||||
|
||||
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
|
||||
|
@ -40,15 +76,33 @@ class ResitelAdmin(reversion.VersionAdmin):
|
|||
list_display = ['jmeno', 'prijmeni', 'user', 'pohlavi_muz', 'skola', 'rok_maturity']
|
||||
list_filter = ['pohlavi_muz', 'rok_maturity', 'zasilat']
|
||||
search_fields = ['jmeno', 'prijmeni', 'ulice', 'user', 'mesto', 'email']
|
||||
inlines = [ReseniKResiteliInline]
|
||||
|
||||
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
|
||||
|
||||
class CisloAdmin(reversion.VersionAdmin):
|
||||
fieldsets = [
|
||||
(None, {'fields': ['cislo', 'rocnik', 'verejne_db']}),
|
||||
(None, {'fields': ['cislo', 'rocnik', 'verejne_db', 'poznamka']}),
|
||||
(u'Data', {'fields': ['datum_vydani', 'datum_deadline']}),
|
||||
]
|
||||
list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne']
|
||||
|
@ -57,12 +111,6 @@ class CisloAdmin(reversion.VersionAdmin):
|
|||
|
||||
admin.site.register(Cislo, CisloAdmin)
|
||||
|
||||
class CisloInline(admin.StackedInline):
|
||||
model = Cislo
|
||||
fields = ['cislo', 'datum_vydani', 'datum_deadline', 'verejne']
|
||||
readonly_fields = ['cislo']
|
||||
extra = 0
|
||||
|
||||
|
||||
### Rocnik
|
||||
|
||||
|
@ -78,30 +126,24 @@ admin.site.register(Rocnik, RocnikAdmin)
|
|||
|
||||
|
||||
### PrilohaReseni
|
||||
|
||||
class PrilohaReseniAdmin(reversion.VersionAdmin):
|
||||
readonly_fields = ['timestamp', 'reseni']
|
||||
fieldsets = [
|
||||
(None, {'fields': ['reseni', 'soubor', 'timestamp']}),
|
||||
(u'Poznámky', {'fields': ['poznamka']}),
|
||||
]
|
||||
list_display = ['reseni', 'soubor', 'timestamp']
|
||||
list_filter = ['reseni', 'timestamp']
|
||||
search_fields = []
|
||||
|
||||
admin.site.register(PrilohaReseni, PrilohaReseniAdmin)
|
||||
|
||||
class PrilohaReseniInline(admin.StackedInline):
|
||||
model = PrilohaReseni
|
||||
fields = ['timestamp', 'soubor', 'poznamka']
|
||||
readonly_fields = ['timestamp']
|
||||
extra = 1
|
||||
# NOTE: Nemá pravděpodobně smysl používat
|
||||
# class PrilohaReseniAdmin(reversion.VersionAdmin):
|
||||
# readonly_fields = ['timestamp', 'reseni']
|
||||
# fieldsets = [
|
||||
# (None, {'fields': ['reseni', 'soubor', 'timestamp']}),
|
||||
# (u'Poznámky', {'fields': ['poznamka']}),
|
||||
# ]
|
||||
# list_display = ['reseni', 'soubor', 'timestamp']
|
||||
# list_filter = ['reseni', 'timestamp']
|
||||
# search_fields = []
|
||||
#
|
||||
# admin.site.register(PrilohaReseni, PrilohaReseniAdmin)
|
||||
|
||||
|
||||
### Reseni
|
||||
|
||||
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 = [
|
||||
(None, {'fields': ['problem', 'resitel', 'forma', 'body', 'cislo_body', 'timestamp']}),
|
||||
(u'Poznámky', {'fields': ['poznamka']}),
|
||||
|
@ -114,12 +156,6 @@ class ReseniAdmin(reversion.VersionAdmin):
|
|||
|
||||
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
|
||||
|
||||
|
@ -135,15 +171,15 @@ class ProblemAdmin(reversion.VersionAdmin):
|
|||
form = ProblemAdminForm
|
||||
fieldsets = [
|
||||
(None, {'fields': ['nazev', 'typ', 'stav', 'autor', 'zamereni', 'body', 'timestamp']}),
|
||||
(u'Vydání', {'fields': ['cislo_zadani', 'kod', 'cislo_reseni', 'opravovatel']}),
|
||||
(u'Texty', {'fields': ['text_problemu', 'text_problemu_org']}),
|
||||
(u'Vydání', {'fields': ['cislo_zadani', 'kod', 'cislo_reseni', 'opravovatel', 'text_problemu']}),
|
||||
(None, {'fields': ['text_problemu_org']}),
|
||||
]
|
||||
readonly_fields = ['timestamp']
|
||||
list_display = ['nazev', 'typ', 'kod', 'stav', 'autor', 'opravovatel', 'verejne', 'cislo_zadani']
|
||||
list_select_related = True
|
||||
list_filter = ['typ', 'stav', 'timestamp']
|
||||
search_fields = ['nazev', 'kod', 'text_problemu_org', 'text_problemu']
|
||||
inlines = [ReseniInline]
|
||||
inlines = [ReseniKProblemuInline]
|
||||
view_on_site = Problem.verejne_url
|
||||
|
||||
admin.site.register(Problem, ProblemAdmin)
|
||||
|
@ -157,8 +193,9 @@ class SoustredeniAdmin(reversion.VersionAdmin):
|
|||
(u'Data', {'fields': ['datum_zacatku', 'datum_konce']}),
|
||||
]
|
||||
list_display = ['rocnik', 'misto', 'datum_zacatku', 'verejne']
|
||||
inlines = [Soustredeni_UcastniciInline]
|
||||
list_filter = ['rocnik']
|
||||
view_on_site = Soustredeni.verejne_url
|
||||
# TODO: UcastNaSoustredeni jako inline
|
||||
|
||||
admin.site.register(Soustredeni, SoustredeniAdmin)
|
||||
|
||||
|
|
Loading…
Reference in a new issue