# -*- coding: utf-8 -*- from django.contrib import admin from django import forms 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, Soustredeni_Ucastnici import autocomplete_light ### Globální nastavení admin.site.register(Nastaveni, SingletonModelAdmin) ### 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 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 class ResitelAdmin(reversion.VersionAdmin): form = autocomplete_light.modelform_factory(Resitel, autocomplete_fields=['skola'], fields=['skola']) fieldsets = [ (None, {'fields': ['jmeno', 'prijmeni', 'user']}), (u'Škola', {'fields': ['skola', 'rok_maturity']}), (u'Seminář', {'fields': ['datum_souhlasu_udaje', 'datum_souhlasu_zasilani', 'datum_prihlaseni', 'zasilat']}), (u'Osobní údaje', {'fields': ['pohlavi_muz', 'datum_narozeni', 'email', 'telefon']}), (u'Adresa', {'fields': ['ulice', 'mesto', 'psc', 'stat']}), ] 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', 'poznamka']}), (u'Data', {'fields': ['datum_vydani', 'datum_deadline']}), ] list_display = ['kod', 'rocnik', 'cislo', 'datum_vydani', 'datum_deadline', 'verejne'] list_filter = ['rocnik'] view_on_site = Cislo.verejne_url admin.site.register(Cislo, CisloAdmin) ### Rocnik class RocnikAdmin(reversion.VersionAdmin): fieldsets = [ (None, {'fields': ['rocnik', 'prvni_rok']}), ] list_display = ['rocnik', 'prvni_rok', 'verejne'] inlines = [CisloInline] view_on_site = Rocnik.verejne_url admin.site.register(Rocnik, RocnikAdmin) ### PrilohaReseni # 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', 'resitel'], fields=['problem', 'resitel']) fieldsets = [ (None, {'fields': ['problem', 'resitel', 'forma', 'body', 'cislo_body', 'timestamp']}), (u'Poznámky', {'fields': ['poznamka']}), ] readonly_fields = ['timestamp'] list_display = ['problem', 'resitel', 'forma', 'body', 'timestamp'] list_filter = ['body', 'timestamp', 'forma'] search_fields = [] inlines = [PrilohaReseniInline] admin.site.register(Reseni, ReseniAdmin) ### Problem #TODO: Autocomplete autor/opravovatel class ProblemAdminForm(forms.ModelForm): text_problemu = forms.CharField(widget=CKEditorWidget()) text_problemu_org = forms.CharField(widget=CKEditorWidget()) class Meta: model = Problem exclude = [] 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', '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 = [ReseniKProblemuInline] view_on_site = Problem.verejne_url admin.site.register(Problem, ProblemAdmin) ### Soustredeni class SoustredeniAdmin(reversion.VersionAdmin): fieldsets = [ (None, {'fields': ['rocnik', 'misto', 'verejne_db']}), (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 admin.site.register(Soustredeni, SoustredeniAdmin)