From 82ab913f1a013214419a43b5452479bccaaa6d9e Mon Sep 17 00:00:00 2001 From: Tim Fechner <tim.fechner@hs-hannover.de> Date: Fri, 17 Nov 2017 14:05:02 +0100 Subject: [PATCH] Support no labels at all ATTENTION: hshassets.forms.elements.Column.__init__ changed! You MUST provide the column width after child elements --- hshassets/forms/elements.py | 11 +++++++---- hshassets/forms/utils.py | 14 +++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/hshassets/forms/elements.py b/hshassets/forms/elements.py index e11a5495..6bdd6544 100644 --- a/hshassets/forms/elements.py +++ b/hshassets/forms/elements.py @@ -16,12 +16,13 @@ class AbstractElement(object): class Field(AbstractElement): - def __init__(self, field_name, *args, **kwargs): + def __init__(self, field_name, label='', *args, **kwargs): super().__init__(*args, **kwargs) self.field_name = field_name + self.label = label def render(self, field): - return mark_safe(render_form_field(field)) + return mark_safe(render_form_field(field, self.label)) class Columns(AbstractElement): @@ -29,10 +30,12 @@ class Columns(AbstractElement): class Column(AbstractElement): - markup = '<div class="column is-{}">{}</div>' + markup = '<div class="column {}">{}</div>' - def __init__(self, width, *args, **kwargs): + def __init__(self, *args, width='', **kwargs): super().__init__(*args, **kwargs) + if width: + width = 'is-' + width self.width = width def render(self, content): diff --git a/hshassets/forms/utils.py b/hshassets/forms/utils.py index 90dd7bc4..1cd8793f 100644 --- a/hshassets/forms/utils.py +++ b/hshassets/forms/utils.py @@ -3,21 +3,29 @@ from django.utils.html import format_html, format_html_join from django.template import defaulttags -def render_form_field(field): +def render_form_field(field, label): try: input_type = field.field.widget.input_type except AttributeError: input_type = None + def label_or_not(content): + if label == None: + return content + elif label == '': + return BulmaFieldMarkup.label(field.label, content) + else: + return BulmaFieldMarkup.label(label, content) + if input_type in ['text', 'number', 'email', 'url', 'password']: # one of those text-like that support icons - out = BulmaFieldMarkup.label(field.label, BulmaFieldMarkup.with_icons(field, field.as_widget())) + out = label_or_not(BulmaFieldMarkup.with_icons(field, field.as_widget())) elif input_type and getattr(BulmaFieldMarkup, input_type, None): # something else explicitly defined out = getattr(BulmaFieldMarkup, input_type)(field, field.as_widget()) else: # fallback default - out = BulmaFieldMarkup.label(field.label, BulmaFieldMarkup.div_control(field.as_widget())) + out = label_or_not(BulmaFieldMarkup.div_control(field.as_widget())) return BulmaFieldMarkup.div_field(field, out) -- GitLab