Merge "Show required service configuration parameters as required"

This commit is contained in:
Jenkins 2015-04-17 13:09:32 +00:00 committed by Gerrit Code Review
commit ff0fa082ba
2 changed files with 44 additions and 17 deletions
tuskar_ui/infrastructure
parameters
templates/horizon/common

@ -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
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,
**kwargs)
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

@ -0,0 +1,20 @@
{% load form_helpers %}
<div class="form-group{% if field.errors %} has-error{% endif %} {{ field.css_classes }}">
<label class="control-label col-sm-3 {% if field.field.required or field.field.parameter.is_required %}{{ form.required_css_class }}{% endif %}" for="{{ field.id_for_label }}">{{ field.label }}</label>
<div class="col-sm-9 {{ classes.value }} {{ field|wrapper_classes }}">
{{ field|add_bootstrap_class }}
{% for error in field.errors %}
<span class="help-block alert alert-danger {{ form.error_css_class }}">{{ error }}</span>
{% empty %}
{% comment %}
Escape help_text a second time here, to avoid an XSS issue in bootstrap.js.
This can most likely be removed once we upgrade bootstrap.js past 2.0.2.
Note: the spaces are necessary here.
{% endcomment %}
{% if field.help_text %}
<span class="help-block">{% filter force_escape %} {{ field.help_text }} {% endfilter %} </span>
{% endif %}
{% endfor %}
</div>
</div>