Merge branch 'faze-tvorby-cisla'
This commit is contained in:
commit
72b99f2960
1 changed files with 47 additions and 16 deletions
|
@ -347,7 +347,20 @@ class PohadkaAdminForm(forms.ModelForm):
|
|||
model = Pohadka
|
||||
exclude = []
|
||||
autor = UserModelChoiceField(User.objects.filter(is_staff=True))
|
||||
uloha = forms.ModelChoiceField(Problem.objects.filter(typ=Problem.TYP_ULOHA))
|
||||
uloha = forms.ModelChoiceField(
|
||||
Problem.objects.filter(typ=Problem.TYP_ULOHA)
|
||||
)
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(PohadkaAdminForm, self).__init__(*args, **kwargs)
|
||||
instance = getattr(self, 'instance', None)
|
||||
|
||||
# viz ProblemAdminForm.__init__
|
||||
if instance and instance.pk:
|
||||
if instance.uloha and instance.uloha.cislo_zadani:
|
||||
if instance.uloha.cislo_zadani.faze != 'admin':
|
||||
self.fields['text'].widget.attrs['readonly'] = True
|
||||
|
||||
|
||||
class PohadkaAdmin(VersionAdmin):
|
||||
form = PohadkaAdminForm
|
||||
|
@ -361,12 +374,6 @@ class PohadkaAdmin(VersionAdmin):
|
|||
return obj.uloha.cislo_zadani.rocnik.rocnik
|
||||
get_rocnik.short_description = u'Ročník'
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
if not obj:
|
||||
return []
|
||||
if obj.uloha.cislo_zadani.faze != 'admin':
|
||||
return ['text']
|
||||
|
||||
list_display = [
|
||||
'__str__',
|
||||
'get_rocnik',
|
||||
|
@ -403,6 +410,38 @@ class ProblemAdminForm(forms.ModelForm):
|
|||
model = Problem
|
||||
exclude = []
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
super(ProblemAdminForm, self).__init__(*args, **kwargs)
|
||||
instance = getattr(self, 'instance', None)
|
||||
|
||||
# Nedovol měnit název a zadání resp. řešení, pokud je cislo_zadani
|
||||
# resp. cislo_reseni mimo fázi admin.
|
||||
#
|
||||
# Nastavení readonly fields sice vypadá lépe (nevygeneruje input tag),
|
||||
# ale při ukládání změny vypíše admin nespecifikovanou chybu, která je
|
||||
# způsobena zřejmě tím, že se neodešle žádná hodnota pro povinné pole
|
||||
# nazev. Navíc by se smazalo nepovinné pole zadání.
|
||||
#
|
||||
# Toto řešení je z http://stackoverflow.com/a/325038/4786205.
|
||||
#
|
||||
# TODO Django 1.9: použít field s atributem disabled?
|
||||
if instance and instance.pk:
|
||||
if instance.cislo_zadani and instance.cislo_zadani.faze != 'admin':
|
||||
# CKEditor neumí readonly ...
|
||||
self.fields['text_zadani'] = forms.CharField(
|
||||
widget=forms.Textarea,
|
||||
required=False
|
||||
)
|
||||
for f in ['nazev', 'text_zadani', 'body']:
|
||||
self.fields[f].widget.attrs['readonly'] = True
|
||||
if instance.cislo_reseni and instance.cislo_reseni.faze != 'admin':
|
||||
self.fields['text_reseni'] = forms.CharField(
|
||||
widget=forms.Textarea,
|
||||
required=False
|
||||
)
|
||||
self.fields['text_reseni'].widget.attrs['readonly'] = True
|
||||
|
||||
|
||||
class ProblemAdmin(VersionAdmin):
|
||||
form = ProblemAdminForm
|
||||
fieldsets = [
|
||||
|
@ -415,15 +454,7 @@ class ProblemAdmin(VersionAdmin):
|
|||
view_on_site = Problem.verejne_url
|
||||
ordering = ['-timestamp']
|
||||
|
||||
def get_readonly_fields(self, request, obj=None):
|
||||
readonly_fields = ['timestamp', 'import_dakos_id']
|
||||
if not obj:
|
||||
return readonly_fields
|
||||
if obj.cislo_zadani and obj.cislo_zadani.faze != 'admin':
|
||||
readonly_fields += ['nazev', 'text_zadani', 'body']
|
||||
if obj.cislo_reseni and obj.cislo_reseni.faze != 'admin':
|
||||
readonly_fields += ['text_reseni']
|
||||
return readonly_fields
|
||||
readonly_fields = ['timestamp', 'import_dakos_id']
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super(ProblemAdmin, self).get_queryset(request)
|
||||
|
|
Loading…
Reference in a new issue