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 = \ |