diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-17 13:09:32 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-17 13:09:32 +0000 |
commit | ff0fa082ba43f01ec1e1a27fc9c61525d1104046 (patch) | |
tree | efd9447448e7c81f8b91ab0e58a363828ed524b3 | |
parent | 7608f8a0cc0eb615ac05fbc5d4c87c30e14547b9 (diff) | |
parent | cfabb4656f4729d4b430fdb5ca8875363379f42c (diff) | |
download | tuskar-ui-ff0fa082ba43f01ec1e1a27fc9c61525d1104046.tar.gz |
Merge "Show required service configuration parameters as required"0.3.0
-rw-r--r-- | tuskar_ui/infrastructure/parameters/forms.py | 43 | ||||
-rw-r--r-- | tuskar_ui/infrastructure/templates/horizon/common/_horizontal_field.html | 20 |
2 files changed, 45 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 diff --git a/tuskar_ui/infrastructure/templates/horizon/common/_horizontal_field.html b/tuskar_ui/infrastructure/templates/horizon/common/_horizontal_field.html new file mode 100644 index 00000000..96947c0a --- /dev/null +++ b/tuskar_ui/infrastructure/templates/horizon/common/_horizontal_field.html @@ -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> |