diff options
Diffstat (limited to 'archaeological_finds/forms.py')
| -rw-r--r-- | archaeological_finds/forms.py | 56 | 
1 files changed, 38 insertions, 18 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index 271ee0c9d..67eb441e5 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -350,15 +350,23 @@ class FindMultipleFormSelection(forms.Form):          return self.cleaned_data +def check_form(wizard, form_name, key): +    request = wizard.request +    storage = wizard.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 +    return True + +  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]: +        if not check_form(self, form_name, key):              return False          try:              val = request.session[storage.prefix][ @@ -377,15 +385,28 @@ def check_not_exist(form_name, key):      return func +def check_value(form_name, key, value): +    def func(self): +        request = self.request +        storage = self.storage +        if not check_form(self, form_name, key): +            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 unicode(val) == unicode(value) +        except ValueError: +            return False +    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]: +        if not check_form(self, form_name, key):              return False          try:              val = model.objects.get(pk=request.session[storage.prefix][ @@ -411,11 +432,7 @@ def check_treatment(form_name, type_key, type_list=[], not_type_list=[]):      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 + '-' + type_key not in \ -           request.session[storage.prefix]['step_data'][form_name]: +        if not check_form(self, form_name, type_key):              return False          try:              tpe = request.session[storage.prefix][ @@ -534,6 +551,10 @@ class NewFindBasketForm(forms.ModelForm):  class SelectFindBasketForm(forms.Form): +    form_label = _(u"Basket") +    associated_models = {'basket': models.FindBasket} +    need_user_for_initialization = True +      basket = forms.ChoiceField(label=_(u"Basket"), required=True, choices=[])      def __init__(self, *args, **kwargs): @@ -595,7 +616,7 @@ class TreatmentFormSelection(forms.Form):          validators=[valid_id(models.Treatment)]) -class BaseTreatmentForm(ManageOldType, SelectFindBasketForm): +class BaseTreatmentForm(ManageOldType, forms.Form):      form_label = _(u"Base treatment")      base_models = ['treatment_type']      associated_models = {'treatment_type': models.TreatmentType, @@ -603,7 +624,7 @@ class BaseTreatmentForm(ManageOldType, SelectFindBasketForm):                           'location': Warehouse,                           'organization': Organization,                           'container': models.Container, -                         'basket': models.FindBasket} +                         }      need_user_for_initialization = True      label = forms.CharField(label=_(u"Label"), @@ -682,7 +703,6 @@ class BaseTreatmentForm(ManageOldType, SelectFindBasketForm):              models.TreatmentType.get_help(                 dct={'upstream_is_many': False, 'downstream_is_many': False})          # TODO -        self.fields.pop('basket')          """          self.fields['basket'].required = False          self.fields['basket'].help_text = \  | 
