diff options
Diffstat (limited to 'archaeological_finds/forms.py')
| -rw-r--r-- | archaeological_finds/forms.py | 75 | 
1 files changed, 73 insertions, 2 deletions
| diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 9fdf2ddf2..997773761 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -283,6 +283,58 @@ class FindMultipleFormSelection(forms.Form):          return self.cleaned_data +def check_exist(form_name, key): +    def func(self): +        request = self.request +        storage = self.storage +        if storage.prefix not in request.session or \ +           'step_data' not in request.session[storage.prefix] or \ +           form_name not in request.session[storage.prefix]['step_data'] or\ +           form_name + '-' + key not in \ +           request.session[storage.prefix]['step_data'][form_name]: +            return False +        try: +            val = request.session[storage.prefix][ +                'step_data'][form_name][form_name + '-' + key] +            if val and len(val) > 0: +                val = val[0] +            return bool(val) +        except ValueError: +            return False +    return func + + +def check_not_exist(form_name, key): +    def func(self): +        return not check_exist(form_name, key)(self) +    return func + + +def check_type_field(form_name, key, model, field): +    def func(self): +        request = self.request +        storage = self.storage +        if storage.prefix not in request.session or \ +           'step_data' not in request.session[storage.prefix] or \ +           form_name not in request.session[storage.prefix]['step_data'] or\ +           form_name + '-' + key not in \ +           request.session[storage.prefix]['step_data'][form_name]: +            return False +        try: +            val = model.objects.get(pk=request.session[storage.prefix][ +                'step_data'][form_name][form_name + '-' + key][0]) +            return bool(getattr(val, field)) +        except (ValueError, model.DoesNotExist): +            return False +    return func + + +def check_type_not_field(form_name, key, model, field): +    def func(self): +        return not check_type_field(form_name, key, model, field)(self) +    return func + +  def check_treatment(form_name, type_key, type_list=[], not_type_list=[]):      type_list = [models.TreatmentType.objects.get(txt_idx=tpe).pk                   for tpe in type_list] @@ -299,8 +351,8 @@ def check_treatment(form_name, type_key, type_list=[], not_type_list=[]):             request.session[storage.prefix]['step_data'][form_name]:              return False          try: -            tpe = request.session[storage.prefix]['step_data']\ -                [form_name][form_name + '-' + type_key] +            tpe = request.session[storage.prefix][ +                'step_data'][form_name][form_name + '-' + type_key]              if not tpe:                  return False              type = int(tpe[0]) @@ -342,6 +394,10 @@ class FindDeletionForm(FinalForm):  class UpstreamFindFormSelection(FindFormSelection):      form_label = _(u"Upstream find") +    def __init__(self, *args, **kwargs): +        super(UpstreamFindFormSelection, self).__init__(*args, **kwargs) +        self.fields['pk'].required = True +  #############################################  # Source management for archaelogical finds #  ############################################# @@ -482,6 +538,21 @@ class BaseTreatmentForm(SelectFindBasketForm):              exclude=['packaging'])          self.fields['treatment_type'].help_text = \              models.TreatmentType.get_help(exclude=['packaging']) +        self.fields['basket'].required = False +        self.fields['basket'].help_text = \ +            _(u"Leave it blank if you want to select a single item") + +    def clean(self, *args, **kwargs): +        try: +            treatment = models.TreatmentType.objects.get( +                pk=self.cleaned_data['treatment_type'], available=True) +        except models.TreatmentType.DoesNotExist: +            raise forms.ValidationError(_(u"This treatment type is not " +                                          u"available.")) +        if treatment.upstream_is_many and \ +                not self.cleaned_data.get('basket'): +            raise forms.ValidationError(_(u"This treatment needs a basket.")) +        return self.cleaned_data  """  #################################### | 
