summaryrefslogtreecommitdiff
path: root/archaeological_finds/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/forms.py')
-rw-r--r--archaeological_finds/forms.py56
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 = \