summaryrefslogtreecommitdiff
path: root/archaeological_files_pdl/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_files_pdl/forms.py')
-rw-r--r--archaeological_files_pdl/forms.py85
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"