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
	
	 Tomas Gavenciak
						Tomas Gavenciak