Snadne vyrabitko admin akci (viz Soustredeni admin)
This commit is contained in:
parent
7bd2945dc3
commit
0a49ace38c
1 changed files with 24 additions and 13 deletions
|
@ -1,4 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
|
||||
from django.contrib import admin
|
||||
from django import forms
|
||||
from django.forms import widgets
|
||||
|
@ -12,6 +13,23 @@ from seminar.models import Skola, Resitel, Rocnik, Cislo, Problem, Reseni, Prilo
|
|||
import autocomplete_light
|
||||
|
||||
|
||||
def make_set_action(atribut, hodnota, nazev):
|
||||
u"""
|
||||
Pomocnik pro rychle vytvareni hromadnych admin akci ktere jen nastavuji
|
||||
atribut (dany jako string) na danou hodnotu.
|
||||
nazev je krátký popis akce pro admin rozhraní."""
|
||||
def action_f(modeladmin, request, queryset):
|
||||
for obj in queryset:
|
||||
assert atribut in obj.__dict__
|
||||
obj.__setattr__(atribut, hodnota)
|
||||
obj.save()
|
||||
action_f.short_description = nazev
|
||||
# Trik: je potřeba, aby se funkce různě (ale libovolně) jmenovaly,
|
||||
# jinak je Django v seznamu akcí splácne do jedné
|
||||
action_f.__name__ = 'action_f_%d_%d_%d' % (id(atribut), id(hodnota), id(nazev), )
|
||||
return action_f
|
||||
|
||||
|
||||
### Globální nastavení
|
||||
|
||||
admin.site.register(Nastaveni, SingletonModelAdmin)
|
||||
|
@ -297,18 +315,6 @@ create_modeladmin(ProblemZadanyAdmin, Problem, 'ProblemZadany', verbose_name=u'P
|
|||
|
||||
### Soustredeni
|
||||
|
||||
def zverejnit_soustredeni(modeladmin, request, queryset):
|
||||
for soustredeni in queryset:
|
||||
soustredeni.verejne_db = True
|
||||
soustredeni.save()
|
||||
zverejnit_soustredeni.short_description = 'Zveřejnit soustředění'
|
||||
|
||||
def skryt_soustredeni(modeladmin, request, queryset):
|
||||
for soustredeni in queryset:
|
||||
soustredeni.verejne_db = False
|
||||
soustredeni.save()
|
||||
skryt_soustredeni.short_description = 'Skrýt soustředění (Zneveřjnit)'
|
||||
|
||||
class SoustredeniAdminForm(forms.ModelForm):
|
||||
text = forms.CharField(widget=CKEditorWidget(), required=False, **field_labels(Soustredeni, 'text'))
|
||||
class Meta:
|
||||
|
@ -325,7 +331,12 @@ class SoustredeniAdmin(reversion.VersionAdmin):
|
|||
inlines = [Soustredeni_UcastniciInline]
|
||||
list_filter = ['typ', 'rocnik']
|
||||
view_on_site = Soustredeni.verejne_url
|
||||
actions = [zverejnit_soustredeni, skryt_soustredeni, ]
|
||||
actions = [
|
||||
make_set_action('verejne_db', True, u'Zveřejnit soustředění'),
|
||||
make_set_action('verejne_db', False, u'Skrýt (zneveřejnit) soustředění'),
|
||||
make_set_action('exportovat', True, u'Nastavit pro AESOP export'),
|
||||
make_set_action('exportovat', False, u'Skrýt pro AESOP export'),
|
||||
]
|
||||
|
||||
admin.site.register(Soustredeni, SoustredeniAdmin)
|
||||
|
||||
|
|
Loading…
Reference in a new issue