summaryrefslogtreecommitdiff
path: root/ishtar_common/forms.py
diff options
context:
space:
mode:
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
commit875462381bc57b13a8ca6b68a52ad1ca065ef95e (patch)
tree68d54bb40b2006fc2a3d5ae938108e9b950eca59 /ishtar_common/forms.py
parentfdd0231543be132b846e3bf12127cd01860f55bf (diff)
downloadIshtar-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.py47
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):