diff options
author | Étienne Loks <etienne.loks@proxience.com> | 2015-02-16 02:51:17 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@proxience.com> | 2015-05-06 15:48:16 +0200 |
commit | 1b6ea1c1a10b10351351f061b050626a231b128d (patch) | |
tree | 0d85b96184792c1bacb4170a3e4fceb5f511cf93 /archaeological_files_pdl/forms.py | |
parent | 1f1545be8ef13050094e8240f3bffc7c985a76e7 (diff) | |
download | Ishtar-1b6ea1c1a10b10351351f061b050626a231b128d.tar.bz2 Ishtar-1b6ea1c1a10b10351351f061b050626a231b128d.zip |
SRA PdL files: raw field for organization (refs #2279)
Diffstat (limited to 'archaeological_files_pdl/forms.py')
-rw-r--r-- | archaeological_files_pdl/forms.py | 85 |
1 files changed, 47 insertions, 38 deletions
diff --git a/archaeological_files_pdl/forms.py b/archaeological_files_pdl/forms.py index 824254d37..cd25ff099 100644 --- a/archaeological_files_pdl/forms.py +++ b/archaeological_files_pdl/forms.py @@ -107,9 +107,15 @@ class FileFormResearchAddress(forms.Form): postal_code = forms.CharField(label=_(u"Postal code"), max_length=10, required=False) -class FileFormGeneralContractor(forms.Form): - form_label = _(u"General contractor") - associated_models = {'general_contractor':models.Person} +class PersonOrgaForm(forms.Form): + PERSON_FIELD = 'TO BE DEFINED' + ORGA_FIELD = 'TO BE DEFINED' + PERSON_TYPE = GENERAL_CONTRACTOR + + def _media(self): + if self.status == 'corporation': + return forms.Media(js=('pdl/JQueryCorporation.js',)) + media = property(_media) def __init__(self, *args, **kwargs): @@ -118,15 +124,18 @@ class FileFormGeneralContractor(forms.Form): current_status = '' if 'data' in kwargs: current_item_key = ((kwargs['prefix'] + '-') if kwargs.get('prefix')\ - else '') + 'general_contractor' + else '') + self.PERSON_FIELD if kwargs['data'] and kwargs['data'].get(current_item_key): - model = self.associated_models['general_contractor'] + model = self.associated_models[self.PERSON_FIELD] try: item = model.objects.get(pk=kwargs['data'][current_item_key]) - current_status = 'natural' if item.is_natural() \ - else 'corporation' + current_status = 'natural' except (model.DoesNotExist, ValueError): pass + current_item_key = ((kwargs['prefix'] + '-') if kwargs.get('prefix')\ + else '') + self.ORGA_FIELD + if kwargs['data'] and kwargs['data'].get(current_item_key): + current_status = 'corporation' status = '' if 'status' in kwargs: @@ -140,58 +149,58 @@ class FileFormGeneralContractor(forms.Form): else: status = DEFAULT_STATUS + self.status = status + if status not in ('natural', 'corporation'): status = DEFAULT_STATUS - super(FileFormGeneralContractor, self).__init__(*args, **kwargs) + super(PersonOrgaForm, self).__init__(*args, **kwargs) # distinct widget for natural and corporation if status == 'natural': - self.fields['general_contractor'] = forms.IntegerField( - label=_(u"General contractor"), + self.fields[self.PERSON_FIELD] = forms.IntegerField( + label=self.fields[self.ORGA_FIELD].label, + required=False, widget=widgets.JQueryPersonOrganization( reverse_lazy('autocomplete-person', - args=[GENERAL_CONTRACTOR.pk]), + args=[self.PERSON_TYPE.pk]), reverse_lazy('person_create'), model=Person, - limit={'person_types':[GENERAL_CONTRACTOR.pk], + limit={'person_types':[self.PERSON_TYPE.pk], 'attached_to__isnull':True}, js_template='ishtar/blocks/JQueryNaturalPerson.js', new=True), validators=[valid_id(Person)]) - else: - self.fields['general_contractor'] = forms.IntegerField( - label=_(u"General contractor"), - widget=widgets.JQueryPersonOrganization( - reverse_lazy('autocomplete-person', - args=[GENERAL_CONTRACTOR.pk]), - reverse_lazy('organization_person_create'), - model=Person, - limit={'person_types':[GENERAL_CONTRACTOR.pk]}, - js_template='ishtar/blocks/JQueryCorporationPerson.js', - new=True), - validators=[valid_id(Person)]) -class FileFormPlanningService(forms.Form): +class FileFormGeneralContractor(PersonOrgaForm): + form_label = _(u"General contractor") + associated_models = {'general_contractor':models.Person} + raw_general_contractor = forms.CharField(label=_(u"General contractor"), + required=False, max_length=200) + PERSON_FIELD = 'general_contractor' + ORGA_FIELD = 'raw_general_contractor' + PERSON_TYPE = GENERAL_CONTRACTOR + +class FileFormPlanningService(PersonOrgaForm): form_label = _(u"Town planning service") associated_models = {'responsible_town_planning_service':models.Person} + reference_number = forms.IntegerField(label=_(u"File reference"), required=False) + raw_town_planning_service = forms.CharField( + label=_(u"Responsible town planning service"), required=False, + max_length=200) + PERSON_FIELD = 'responsible_town_planning_service' + ORGA_FIELD = 'raw_town_planning_service' + PERSON_TYPE = RESPONSIBLE_PLANNING_SERVICE def __init__(self, *args, **kwargs): super(FileFormPlanningService, self).__init__(*args, **kwargs) - self.fields['responsible_town_planning_service'] = forms.IntegerField( - label=_(u"Responsible town planning service"), - widget=widgets.JQueryPersonOrganization( - reverse_lazy('autocomplete-person', - args=[RESPONSIBLE_PLANNING_SERVICE.pk]), - reverse_lazy('townplanning_create'), - model=Person, - limit={'person_types':[RESPONSIBLE_PLANNING_SERVICE.pk]}, - js_template='ishtar/blocks/JQueryCorporationPerson.js', - new=True), - validators=[valid_id(Person)]) - self.fields.keyOrder = ['responsible_town_planning_service', - 'reference_number'] + self.fields.keyOrder = [] + if self.ORGA_FIELD in self.fields: + self.fields.keyOrder.append(self.ORGA_FIELD) + elif self.PERSON_FIELD in self.fields: + self.fields.keyOrder.append(self.PERSON_FIELD) + self.fields.keyOrder.append('reference_number') class FileFormInstruction(forms.Form): form_label = u"Instruction SRA" |