Improve form display: do not repeat section title
Some checks failed
Tests / test (push) Failing after 29s
Some checks failed
Tests / test (push) Failing after 29s
This commit is contained in:
parent
412d344536
commit
f22dc98c23
3 changed files with 22 additions and 8 deletions
|
@ -43,6 +43,7 @@ known_first_party = "servala"
|
||||||
[tool.flake8]
|
[tool.flake8]
|
||||||
max-line-length = 160
|
max-line-length = 160
|
||||||
exclude = ".venv"
|
exclude = ".venv"
|
||||||
|
ignore = "E203"
|
||||||
|
|
||||||
[tool.djlint]
|
[tool.djlint]
|
||||||
extend_exclude = "src/servala/static/mazer"
|
extend_exclude = "src/servala/static/mazer"
|
||||||
|
|
|
@ -147,6 +147,11 @@ class CrdModelFormMixin:
|
||||||
for field in ("organization", "context"):
|
for field in ("organization", "context"):
|
||||||
self.fields[field].widget = forms.HiddenInput()
|
self.fields[field].widget = forms.HiddenInput()
|
||||||
|
|
||||||
|
def strip_title(self, field_name, label):
|
||||||
|
field = self.fields[field_name]
|
||||||
|
if field and field.label.startswith(label):
|
||||||
|
field.label = field.label[len(label) :]
|
||||||
|
|
||||||
def get_fieldsets(self):
|
def get_fieldsets(self):
|
||||||
fieldsets = []
|
fieldsets = []
|
||||||
|
|
||||||
|
@ -174,7 +179,7 @@ class CrdModelFormMixin:
|
||||||
nested_fieldsets[parent_key] = {
|
nested_fieldsets[parent_key] = {
|
||||||
"fields": [],
|
"fields": [],
|
||||||
"fieldsets": {},
|
"fieldsets": {},
|
||||||
"title": parent_key.title(),
|
"title": deslugify(parent_key),
|
||||||
}
|
}
|
||||||
parent = nested_fieldsets[parent_key]
|
parent = nested_fieldsets[parent_key]
|
||||||
if len(parts) == 3: # Top-level within fieldset
|
if len(parts) == 3: # Top-level within fieldset
|
||||||
|
@ -183,7 +188,7 @@ class CrdModelFormMixin:
|
||||||
sub_key = parts[2]
|
sub_key = parts[2]
|
||||||
if not parent["fieldsets"].get(sub_key):
|
if not parent["fieldsets"].get(sub_key):
|
||||||
parent["fieldsets"][sub_key] = {
|
parent["fieldsets"][sub_key] = {
|
||||||
"title": sub_key.title(),
|
"title": deslugify(sub_key),
|
||||||
"fields": [],
|
"fields": [],
|
||||||
}
|
}
|
||||||
parent["fieldsets"][sub_key]["fields"].append(field_name)
|
parent["fieldsets"][sub_key]["fields"].append(field_name)
|
||||||
|
@ -194,12 +199,18 @@ class CrdModelFormMixin:
|
||||||
for fieldset in group["fieldsets"].values():
|
for fieldset in group["fieldsets"].values():
|
||||||
if (field_count := len(fieldset["fields"])) == 1:
|
if (field_count := len(fieldset["fields"])) == 1:
|
||||||
group["fields"].append(fieldset["fields"][0])
|
group["fields"].append(fieldset["fields"][0])
|
||||||
|
fieldset["fields"] = []
|
||||||
else:
|
else:
|
||||||
|
title = f"{group['title']}: {fieldset['title']}: "
|
||||||
|
for field in fieldset["fields"]:
|
||||||
|
self.strip_title(field, title)
|
||||||
total_fields += field_count
|
total_fields += field_count
|
||||||
total_fields += len(group["fields"])
|
if (total_fields + len(group["fields"])) == 1:
|
||||||
if total_fields == 1:
|
|
||||||
others.append(group["fields"][0])
|
others.append(group["fields"][0])
|
||||||
else:
|
else:
|
||||||
|
title = f"{group['title']}: "
|
||||||
|
for field in group["fields"]:
|
||||||
|
self.strip_title(field, title)
|
||||||
fieldsets.append(group)
|
fieldsets.append(group)
|
||||||
|
|
||||||
# Add 'others' tab if there are any fields
|
# Add 'others' tab if there are any fields
|
||||||
|
|
|
@ -30,10 +30,12 @@
|
||||||
{% with field=form|get_field:field %}{{ field.as_field_group }}{% endwith %}
|
{% with field=form|get_field:field %}{{ field.as_field_group }}{% endwith %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for subfieldset in fieldset.fieldsets.values %}
|
{% for subfieldset in fieldset.fieldsets.values %}
|
||||||
|
{% if subfieldset.fields %}
|
||||||
<h4>{{ subfieldset.title }}</h4>
|
<h4>{{ subfieldset.title }}</h4>
|
||||||
{% for field in subfieldset.fields %}
|
{% for field in subfieldset.fields %}
|
||||||
{% with field=form|get_field:field %}{{ field.as_field_group }}{% endwith %}
|
{% with field=form|get_field:field %}{{ field.as_field_group }}{% endwith %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</div>
|
</div>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue