diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-07-17 11:24:39 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-07-17 11:24:39 +0200 |
commit | 19fcad448d6b0f748cb9585a41f748aea62ab1f3 (patch) | |
tree | a59cf4f022e1a127e18baade9a7a82c8852b5d7e | |
parent | 21c052fa05d9904bc38b34dab15a1ba2d267db88 (diff) | |
download | Ishtar-19fcad448d6b0f748cb9585a41f748aea62ab1f3.tar.bz2 Ishtar-19fcad448d6b0f748cb9585a41f748aea62ab1f3.zip |
Fix cached forms that doesn't allow modeltypes update
Don't instanciate the form passed to the widget
-rw-r--r-- | archaeological_context_records/forms.py | 2 | ||||
-rw-r--r-- | archaeological_files/forms.py | 4 | ||||
-rw-r--r-- | archaeological_finds/forms.py | 37 | ||||
-rw-r--r-- | archaeological_operations/forms.py | 4 | ||||
-rw-r--r-- | ishtar_common/forms.py | 2 | ||||
-rw-r--r-- | ishtar_common/widgets.py | 7 |
6 files changed, 33 insertions, 23 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py index fce5193d6..48b198fe3 100644 --- a/archaeological_context_records/forms.py +++ b/archaeological_context_records/forms.py @@ -67,7 +67,7 @@ class RecordFormSelection(forms.Form): currents = {'pk':models.ContextRecord} pk = forms.IntegerField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-contextrecord'), - RecordSelect(), models.ContextRecord, + RecordSelect, models.ContextRecord, source_full=reverse_lazy('get-contextrecord-full')), validators=[valid_id(models.ContextRecord)]) diff --git a/archaeological_files/forms.py b/archaeological_files/forms.py index 67f00c8d8..ad5b3f614 100644 --- a/archaeological_files/forms.py +++ b/archaeological_files/forms.py @@ -71,7 +71,7 @@ class FileFormSelection(forms.Form): currents = {'pk':models.File} pk = forms.IntegerField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-file'), - FileSelect(), models.File, source_full=reverse_lazy('get-file-full')), + FileSelect, models.File, source_full=reverse_lazy('get-file-full')), validators=[valid_id(models.File)]) def clean(self): @@ -194,7 +194,7 @@ class AdministrativeActFileSelect(TableSelect): class AdministrativeActFileFormSelection(AdministrativeActOpeFormSelection): pk = forms.IntegerField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeactfile'), - AdministrativeActFileSelect(), AdministrativeAct, + AdministrativeActFileSelect, AdministrativeAct, table_cols='TABLE_COLS_FILE'), validators=[valid_id(AdministrativeAct)]) diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index feaad0e23..367bff023 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -54,32 +54,39 @@ class FindForm(forms.Form): widget=forms.Textarea) base_finds__is_isolated = forms.NullBooleanField(label=_(u"Is isolated?"), required=False) - material_type = forms.ChoiceField(label=_("Material type"), - choices=models.MaterialType.get_types()) + material_type = forms.ChoiceField(label=_("Material type"), choices=[]) volume = FloatField(label=_(u"Volume (l)"), required=False) weight = FloatField(label=_(u"Weight (g)"), required=False) find_number = forms.IntegerField(label=_(u"Find number"), required=False) + def __init__(self, *args, **kwargs): + super(FindForm, self).__init__(*args, **kwargs) + self.fields['material_type'].choices = models.MaterialType.get_types() + self.fields['material_type'].help_text = models.MaterialType.get_help() + class DateForm(forms.Form): form_label = _("Dating") base_model = 'dating' associated_models = {'dating__dating_type':DatingType, 'dating__quality':DatingQuality, 'dating__period':Period} - dating__period = forms.ChoiceField(label=_("Period"), - choices=Period.get_types()) + dating__period = forms.ChoiceField(label=_("Period"), choices=[]) dating__start_date = forms.IntegerField(label=_(u"Start date"), required=False) dating__end_date = forms.IntegerField(label=_(u"End date"), required=False) dating__quality = forms.ChoiceField(label=_("Quality"), required=False, - choices=DatingQuality.get_types()) + choices=[]) dating__dating_type = forms.ChoiceField(label=_("Dating type"), - required=False, choices=[]) + required=False, choices=[]) def __init__(self, *args, **kwargs): super(DateForm, self).__init__(*args, **kwargs) self.fields['dating__dating_type'].choices = DatingType.get_types() self.fields['dating__dating_type'].help_text = DatingType.get_help() + self.fields['dating__period'].choices = Period.get_types() + self.fields['dating__period'].help_text = Period.get_help() + self.fields['dating__quality'].choices = DatingQuality.get_types() + self.fields['dating__quality'].help_text = DatingQuality.get_help() class FindSelect(TableSelect): base_finds__context_record__parcel__town = get_town_field() @@ -108,7 +115,7 @@ class FindFormSelection(forms.Form): currents = {'pk':models.Find} pk = forms.IntegerField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-find'), - FindSelect(), models.Find, source_full=reverse_lazy('get-find-full')), + FindSelect, models.Find, source_full=reverse_lazy('get-find-full')), validators=[valid_id(models.Find)]) class BaseTreatmentForm(forms.Form): @@ -146,7 +153,7 @@ class FindMultipleFormSelection(forms.Form): associated_labels = {'finds':_(u"Finds")} finds = forms.CharField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-find'), - FindSelect(), models.Find, multiple=True, multiple_cols=[2, 3, 4]), + FindSelect, models.Find, multiple=True, multiple_cols=[2, 3, 4]), validators=[valid_ids(models.Find)]) def clean(self): @@ -183,12 +190,16 @@ class ResultFindForm(forms.Form): validators=[validators.MaxLengthValidator(60)]) description = forms.CharField(label=_(u"Precise description"), widget=forms.Textarea) - material_type = forms.ChoiceField(label=_(u"Material type"), - choices=models.MaterialType.get_types()) + material_type = forms.ChoiceField(label=_(u"Material type"), choices=[]) volume = forms.IntegerField(label=_(u"Volume (l)")) weight = forms.IntegerField(label=_(u"Weight (g)")) find_number = forms.IntegerField(label=_(u"Find number")) + def __init__(self, *args, **kwargs): + super(ResultFindForm, self).__init__(*args, **kwargs) + self.fields['material_type'].choices = models.MaterialType.get_types() + self.fields['material_type'].help_text = models.MaterialType.get_help() + ResultFindFormSet = formset_factory(ResultFindForm, can_delete=True, formset=FormSet) ResultFindFormSet.form_label = _(u"Resulting finds") @@ -209,11 +220,9 @@ class FindSourceSelect(SourceSelect): find__base_finds__context_record__operation__year = forms.IntegerField( label=_(u"Year of the operation")) find__dating__period = forms.ChoiceField( - label=_(u"Period of the archaelogical find"), - choices=[]) + label=_(u"Period of the archaelogical find"), choices=[]) find__material_type = forms.ChoiceField( - label=_("Material type of the archaelogical find"), - choices=models.MaterialType.get_types()) + label=_("Material type of the archaelogical find"), choices=[]) find__description = forms.CharField( label=_(u"Description of the archaelogical find")) diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index c1003dfe9..cbdade3b2 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -158,7 +158,7 @@ class OperationFormSelection(forms.Form): currents = {'pk':models.Operation} pk = forms.IntegerField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-operation'), - OperationSelect(), models.Operation, + OperationSelect, models.Operation, source_full=reverse_lazy('get-operation-full')), validators=[valid_id(models.Operation)]) @@ -485,7 +485,7 @@ class AdministrativeActOpeFormSelection(forms.Form): currents = {'pk':models.AdministrativeAct} pk = forms.IntegerField(label="", required=False, widget=widgets.JQueryJqGrid(reverse_lazy('get-administrativeactop'), - AdministrativeActOpeSelect(), models.AdministrativeAct, + AdministrativeActOpeSelect, models.AdministrativeAct, table_cols='TABLE_COLS_OPE'), validators=[valid_id(models.AdministrativeAct)]) diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 4477213c9..bc780ef9a 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -136,7 +136,7 @@ def get_form_selection(class_name, label, key, model, base_form, get_url, 'currents':{key:model},} attrs[key] = forms.IntegerField(label="", required=False, validators=[models.valid_id(model)], - widget=widgets.JQueryJqGrid(reverse_lazy(get_url), base_form(), model, + widget=widgets.JQueryJqGrid(reverse_lazy(get_url), base_form, model, new=new, new_message=new_message)) def clean(self): cleaned_data = self.cleaned_data diff --git a/ishtar_common/widgets.py b/ishtar_common/widgets.py index af638aba7..d19b73b94 100644 --- a/ishtar_common/widgets.py +++ b/ishtar_common/widgets.py @@ -207,7 +207,8 @@ class JQueryJqGrid(forms.RadioSelect): def render(self, name, value=None, attrs=None):
t = loader.get_template('blocks/form_snippet.html')
- rendered = t.render(Context({'form':self.form}))
+ form = self.form()
+ rendered = t.render(Context({'form':form}))
rendered += u"\n</table>\n"\
u"<button id='search_%s' class='submit'>%s</button>" % (
name, unicode(_("Search")))
@@ -219,8 +220,8 @@ class JQueryJqGrid(forms.RadioSelect): rendered += "\n<h4>%s</h4>\n" % unicode(_("Search and select an item"))
extra_cols = []
col_names, col_idx = [], []
- for k in self.form.get_input_ids():
- #field = self.form.fields[k]
+ for k in form.get_input_ids():
+ #field = form.fields[k]
col_idx.append(u'"%s"' % k)
for field_name in getattr(self.associated_model, self.table_cols):
field = self.associated_model
|