|
|
@ -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 |
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
admin.site.register(Skola, SkolaAdmin) |
|
|
|
|
|
|
|
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) |
|
|
|
|
|
|
|