Browse Source

Snadne vyrabitko admin akci (viz Soustredeni admin)

remotes/origin/vysl
Tomas Gavenciak 9 years ago
parent
commit
0a49ace38c
  1. 37
      seminar/admin.py

37
seminar/admin.py

@ -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…
Cancel
Save