diff options
author | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-26 19:09:09 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@peacefrogs.net> | 2013-12-26 19:09:09 +0100 |
commit | 82bec7af1d41ea884fa4961fee017fbbc7f99470 (patch) | |
tree | d69858ce6408508fc2661a04e75d0a5b32d33f5a /archaeological_operations/forms.py | |
parent | 4e5b0b837027a76ab54fdf78329b7feccfa49638 (diff) | |
download | Ishtar-82bec7af1d41ea884fa4961fee017fbbc7f99470.tar.bz2 Ishtar-82bec7af1d41ea884fa4961fee017fbbc7f99470.zip |
Manage archaeological sites into forms (refs #1586)
* create new widget: multiple autocomplete field
* move JS autocomplete to template
* archaeological site reference made unique
Diffstat (limited to 'archaeological_operations/forms.py')
-rw-r--r-- | archaeological_operations/forms.py | 34 |
1 files changed, 32 insertions, 2 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index d9f5ece9b..0faad26a9 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -62,7 +62,7 @@ class ParcelField(forms.MultiValueField): class ParcelForm(forms.Form): form_label = _("Parcels") base_model = 'parcel' - associated_models = {'parcel':models.Parcel, 'town':models.Town} + associated_models = {'parcel':models.Parcel, 'town':models.Town,} town = forms.ChoiceField(label=_("Town"), choices=(), required=False, validators=[valid_id(models.Town)]) year = forms.IntegerField(label=_("Year"), required=False, @@ -275,7 +275,8 @@ class OperationFormGeneral(forms.Form): form_label = _(u"General") associated_models = {'in_charge':Person, 'associated_file':File, - 'operation_type':models.OperationType} + 'operation_type':models.OperationType, + 'archaeological_sites':models.ArchaeologicalSite} currents = {'associated_file':File} pk = forms.IntegerField(required=False, widget=forms.HiddenInput) in_charge = forms.IntegerField(label=_("Person in charge of the operation"), @@ -312,6 +313,10 @@ class OperationFormGeneral(forms.Form): max_length=120, widget=forms.Textarea) operator_reference = forms.CharField(label=_(u"Operator reference"), required=False, max_length=20) + archaeological_sites = widgets.MultipleAutocompleteField( + model=models.ArchaeologicalSite, + label=_("Associated archaelogical sites"), + new=True, required=False) if settings.COUNTRY == 'fr': negative_result = forms.NullBooleanField(required=False, label=u"Résultat considéré comme négatif") @@ -489,6 +494,31 @@ PeriodFormset = formset_factory(PeriodForm, can_delete=True, formset=PeriodFormSet) PeriodFormset.form_label = _("Periods") +class ArchaeologicalSiteForm(forms.Form): + reference = forms.CharField(label=_(u"Reference"), max_length=20) + name = forms.CharField(label=_(u"Name"), max_length=200, required=False) + + def clean_reference(self): + reference = self.cleaned_data['reference'] + if models.ArchaeologicalSite.objects.filter( + reference=reference).count(): + raise forms.ValidationError(_(u"This reference already exists.")) + return reference + + def save(self, user): + dct = self.cleaned_data + dct['history_modifier'] = user + return models.ArchaeologicalSite.objects.create(**dct) + +class ArchaeologicalSiteSelectionForm(forms.Form): + form_label = _("Associated archaelogical sites") + archaeological_sites = forms.IntegerField( + widget=widgets.JQueryAutoComplete(reverse_lazy( + 'autocomplete-archaeologicalsite'), + associated_model=models.ArchaeologicalSite, new=True, + multiple=True), + label=_(u"Search")) + class FinalOperationClosingForm(FinalForm): confirm_msg = " " confirm_end_msg = _(u"Would you like to close this operation?") |