diff options
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" | 
