diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-07 16:52:02 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-06-12 10:46:13 +0200 | 
| commit | 875462381bc57b13a8ca6b68a52ad1ca065ef95e (patch) | |
| tree | 68d54bb40b2006fc2a3d5ae938108e9b950eca59 /ishtar_common/forms.py | |
| parent | fdd0231543be132b846e3bf12127cd01860f55bf (diff) | |
| download | Ishtar-875462381bc57b13a8ca6b68a52ad1ca065ef95e.tar.bz2 Ishtar-875462381bc57b13a8ca6b68a52ad1ca065ef95e.zip | |
Document form: add related fields (refs #4107)
Diffstat (limited to 'ishtar_common/forms.py')
| -rw-r--r-- | ishtar_common/forms.py | 47 | 
1 files changed, 43 insertions, 4 deletions
| diff --git a/ishtar_common/forms.py b/ishtar_common/forms.py index 59f3e141a..b0f1920df 100644 --- a/ishtar_common/forms.py +++ b/ishtar_common/forms.py @@ -33,6 +33,7 @@ from django.forms.formsets import BaseFormSet, DELETION_FIELD_NAME  from django.utils import formats, translation  from django.utils.functional import lazy  from django.utils.safestring import mark_safe +from django.utils.text import slugify  from django.utils.translation import ugettext_lazy as _  from bootstrap_datepicker.widgets import DatePicker, DATE_FORMAT, DateField @@ -356,14 +357,46 @@ class FieldType(object):  class FormHeader(object): -    def __init__(self, label, level=4): +    def __init__(self, label, level=4, collapse=False):          self.label = label +        self.collapse = collapse +        if collapse: +            level = 5          self.level = level      def render(self): -        return mark_safe(u"<h{level}>{label}</h{level}>".format( -            label=self.label, level=self.level -        )) +        if not self.collapse: +            return mark_safe(u"<h{level}>{label}</h{level}>".format( +                label=self.label, level=self.level +            )) +        html = u"""<div id="collapse-parent-{slug}"> +  <div class="card"> +    <div class="card-header" id="collapse-head-{slug}"> +      <h{level} href="#"> +        <button class="btn btn-link" type="button" data-toggle="collapse"  +        data-target="#collapse-{slug}" aria-expanded="true"  +        aria-controls="collapse-{slug}"> +          <i class="fa fa-compress" aria-hidden="true"></i> +          {label} +        </button> +      </h{level}> +    </div> + +    <div id="collapse-{slug}" class="collapse" +        aria-labelledby="collapse-head-{slug}" +        data-parent="#colapse-parent-{slug}"> +      <div class="card-body"> +""".format(label=self.label, slug=slugify(self.label), level=self.level) +        return mark_safe(html) + +    def render_end(self): +        if not self.collapse: +            return "" +        return mark_safe(u""" +      </div> +    </div> +  </div> +  </div>""")  class IshtarForm(forms.Form): @@ -404,6 +437,12 @@ class IshtarForm(forms.Form):          self.fields[field.key].choices = field.get_choices()          self.fields[field.key].help_text = field.get_help() +    def headers(self, key): +        if key not in self.HEADERS: +            return +        self.current_header = self.HEADERS[key] +        return self.current_header +  class TableSelect(IshtarForm):      def __init__(self, *args, **kwargs): | 
