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 | 8b3347dd635eef93e7af1a71c4183630277a7f5f (patch) | |
tree | 68d54bb40b2006fc2a3d5ae938108e9b950eca59 /ishtar_common/forms.py | |
parent | 07f24f648504004adbb57b16bd18fbd23a3c3998 (diff) | |
download | Ishtar-8b3347dd635eef93e7af1a71c4183630277a7f5f.tar.bz2 Ishtar-8b3347dd635eef93e7af1a71c4183630277a7f5f.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): |