summaryrefslogtreecommitdiff
path: root/tuskar_ui/infrastructure/parameters/forms.py
diff options
context:
space:
mode:
Diffstat (limited to 'tuskar_ui/infrastructure/parameters/forms.py')
-rw-r--r--tuskar_ui/infrastructure/parameters/forms.py43
1 files changed, 25 insertions, 18 deletions
diff --git a/tuskar_ui/infrastructure/parameters/forms.py b/tuskar_ui/infrastructure/parameters/forms.py
index cefba145..b94dc00e 100644
--- a/tuskar_ui/infrastructure/parameters/forms.py
+++ b/tuskar_ui/infrastructure/parameters/forms.py
@@ -46,6 +46,10 @@ CINDER_ISCSI_HELPER_CHOICES = [
]
+class ParameterAwareMixin(object):
+ parameter = None
+
+
def parameter_fields(request, prefix=None, read_only=False):
fields = SortedDict()
plan = api.tuskar.Plan.get_the_plan(request)
@@ -54,18 +58,17 @@ def parameter_fields(request, prefix=None, read_only=False):
for p in parameters:
if prefix and not p.name.startswith(prefix):
continue
- kwargs = {}
+ Field = django.forms.CharField
+ field_kwargs = {}
+ widget = None
if read_only:
if p.hidden:
- kwargs['widget'] = tuskar_ui.forms.StaticTextPasswordWidget
+ widget = tuskar_ui.forms.StaticTextPasswordWidget
else:
- kwargs['widget'] = tuskar_ui.forms.StaticTextWidget
- Field = django.forms.CharField
+ widget = tuskar_ui.forms.StaticTextWidget
else:
if p.hidden:
- Field = django.forms.CharField
- kwargs['widget'] = (
- django.forms.PasswordInput(render_value=True))
+ widget = django.forms.PasswordInput(render_value=True)
elif p.type == 'number':
Field = django.forms.IntegerField
elif p.type == 'boolean':
@@ -73,18 +76,22 @@ def parameter_fields(request, prefix=None, read_only=False):
elif (p.type == 'string' and
p.constraints['allowed_values']['definition']):
Field = django.forms.ChoiceField
- kwargs['choices'] = (
+ field_kwargs['choices'] = (
p.constraints['allowed_values']['definition'])
- else:
- if (p.type in ['json', 'comma_delimited_list'] or
- 'Certificate' in p.name):
- kwargs['widget'] = django.forms.Textarea
- Field = django.forms.CharField
-
- fields[p.name] = Field(required=False,
- label=_parameter_label(p),
- initial=p.value,
- **kwargs)
+ elif (p.type in ['json', 'comma_delimited_list'] or
+ 'Certificate' in p.name):
+ widget = django.forms.Textarea
+
+ fields[p.name] = Field(
+ required=False,
+ label=_parameter_label(p),
+ initial=p.value,
+ widget=widget,
+ **field_kwargs
+ )
+ fields[p.name].__class__ = type('ParameterAwareField',
+ (ParameterAwareMixin, Field), {})
+ fields[p.name].parameter = p
return fields