diff options
Diffstat (limited to 'archaeological_operations/forms.py')
| -rw-r--r-- | archaeological_operations/forms.py | 70 | 
1 files changed, 45 insertions, 25 deletions
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py index 433f3fd54..1a41503d4 100644 --- a/archaeological_operations/forms.py +++ b/archaeological_operations/forms.py @@ -425,30 +425,59 @@ class RecordRelationsForm(ManageOldType):  class RecordRelationsFormSetBase(FormSet):      delete_widget = forms.CheckboxInput -    # passing left_record should be nicely done with form_kwargs with Django 1.9 -    # with no need of all these complications - -    def __init__(self, *args, **kwargs): -        self.left_record = None -        if 'left_record' in kwargs: -            self.left_record = kwargs.pop('left_record') -        super().__init__(*args, **kwargs) - -    def _construct_forms(self): -        # instantiate all the forms and put them in self.forms -        self.forms = [] -        for i in range(self.total_form_count()): -            self.forms.append(self._construct_form( -                i, left_record=self.left_record))  RecordRelationsFormSet = formset_factory( -    RecordRelationsForm, can_delete=True, formset=RecordRelationsFormSetBase) +    RecordRelationsForm, can_delete=True, formset=RecordRelationsFormSetBase, +    extra=3 +)  RecordRelationsFormSet.form_label = _("Operations - Relations")  RecordRelationsFormSet.form_admin_name = _("Operation - Relations")  RecordRelationsFormSet.form_slug = "operation-relations" +class OpeSiteRelationsForm(ManageOldType): +    associated_models = {'right_record': models.ArchaeologicalSite} + +    right_record = forms.IntegerField( +        label="Site", +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-archaeologicalsite'), +            associated_model=models.ArchaeologicalSite), +        validators=[valid_id(models.ArchaeologicalSite)], required=False) + +    def __init__(self, *args, **kwargs): +        super().__init__(*args, **kwargs) +        self.fields["right_record"].label = get_current_profile().get_site_label() + +OpeSiteRelationsFormSet = formset_factory( +    OpeSiteRelationsForm, can_delete=True, formset=RecordRelationsFormSetBase, +    extra=3 +) +OpeSiteRelationsFormSet.form_label = _("Operations - Sites relations") +OpeSiteRelationsFormSet.form_admin_name = _("Operation - Sites - relations") +OpeSiteRelationsFormSet.form_slug = "operation-site-relations" + + +class SiteOpeRelationsForm(ManageOldType): +    associated_models = {'right_record': models.Operation} + +    right_record = forms.IntegerField( +        label=_("Operation"), +        widget=widgets.JQueryAutoComplete( +            reverse_lazy('autocomplete-operation'), +            associated_model=models.Operation), +        validators=[valid_id(models.Operation)], required=False) + +SiteOpeRelationsFormSet = formset_factory( +    SiteOpeRelationsForm, can_delete=True, formset=RecordRelationsFormSetBase, +    extra=3 +) +SiteOpeRelationsFormSet.form_label = _("Sites - Operations relations") +SiteOpeRelationsFormSet.form_admin_name = _("Sites - Operation relations") +SiteOpeRelationsFormSet.form_slug = "siteoperation-relations" + +  class OperationSelect(GeoItemSelect):      _model = models.Operation      form_admin_name = _("Operation - 001 - Search") @@ -671,7 +700,6 @@ class OperationFormGeneral(CustomForm, ManageOldType):          'collaborator': Person,          'remain': models.RemainType,          'period': models.Period, -        'archaeological_site': models.ArchaeologicalSite,          'town': Town,      }      HEADERS['code_patriarche'] = FormHeader(_("General")) @@ -691,9 +719,6 @@ class OperationFormGeneral(CustomForm, ManageOldType):          label=_("Towns"),          model=Town,          required=False, remote=True) -    archaeological_site = widgets.Select2MultipleField( -        model=models.ArchaeologicalSite, -        required=False, remote=True)      year = forms.IntegerField(label=_("Year"),                                initial=lambda: datetime.datetime.now().year,                                validators=[validators.MinValueValidator(1000), @@ -845,15 +870,10 @@ class OperationFormGeneral(CustomForm, ManageOldType):          if not profile.underwater:              self._remove_fields(("drassm_code",))          data = kwargs.get("data", {}) or kwargs.get("initial", {}) -        has_site = any(1 for k, v in data.items() if v and k.split("-")[-1] == "archaeological_site") -        if not has_site and not profile.archaeological_site: -            self._remove_fields(("archaeological_site",))          if 'collaborator' in self.fields:              self.fields['collaborator'].widget.attrs['full-width'] = True          if towns and towns != -1:              self.fields['town'].choices = [('', '--')] + towns -        if 'archaeological_site' in self.fields: -            self.fields['archaeological_site'].label = get_current_profile().get_site_label()      def clean(self):          cleaned_data = self.cleaned_data  | 
