October feature list #226

Merged
tobru merged 36 commits from october into main 2025-10-22 13:43:34 +00:00
2 changed files with 27 additions and 9 deletions
Showing only changes of commit 850a791851 - Show all commits

View file

@ -328,11 +328,8 @@ class CrdModelFormMixin:
field.required = False
# Mark advanced fields with a CSS class and data attribute
advanced_fields = getattr(self, "ADVANCED_FIELDS", [])
for name, field in self.fields.items():
if name in advanced_fields or any(
name.startswith(f"{af}.") for af in advanced_fields
):
if self.is_field_advanced(name):
field.widget.attrs.update(
{
"class": (
@ -358,6 +355,17 @@ class CrdModelFormMixin:
return True
return False
def is_field_advanced(self, field_name):
advanced_fields = getattr(self, "ADVANCED_FIELDS", [])
return field_name in advanced_fields or any(
field_name.startswith(f"{af}.") for af in advanced_fields
)
def are_all_fields_advanced(self, field_list):
if not field_list:
return False
return all(self.is_field_advanced(field_name) for field_name in field_list)
def get_fieldsets(self):
fieldsets = []
@ -373,6 +381,7 @@ class CrdModelFormMixin:
"fields": general_fields,
"fieldsets": [],
"has_mandatory": self.has_mandatory_fields(general_fields),
"is_advanced": self.are_all_fields_advanced(general_fields),
}
if all(
[
@ -439,6 +448,9 @@ class CrdModelFormMixin:
title = f"{fieldset['title']}: {sub_fieldset['title']}: "
for field in sub_fieldset["fields"]:
self.strip_title(field, title)
sub_fieldset["is_advanced"] = self.are_all_fields_advanced(
sub_fieldset["fields"]
)
nested_fieldsets_list.append(sub_fieldset)
fieldset["fieldsets"] = nested_fieldsets_list
@ -455,6 +467,8 @@ class CrdModelFormMixin:
all_fields.extend(sub_fieldset["fields"])
fieldset["has_mandatory"] = self.has_mandatory_fields(all_fields)
fieldset["is_advanced"] = self.are_all_fields_advanced(all_fields)
fieldsets.append(fieldset)
# Add 'others' tab if there are any fields
@ -465,6 +479,7 @@ class CrdModelFormMixin:
"fields": others,
"fieldsets": [],
"has_mandatory": self.has_mandatory_fields(others),
"is_advanced": self.are_all_fields_advanced(others),
}
)

View file

@ -21,7 +21,8 @@
<ul class="nav nav-tabs" id="myTab" role="tablist">
{% for fieldset in form.get_fieldsets %}
{% if not fieldset.hidden %}
<li class="nav-item" role="presentation">
<li class="nav-item{% if fieldset.is_advanced %} advanced-field-group collapse{% endif %}"
role="presentation">
<button class="nav-link {% if forloop.first %}active{% endif %}{% if fieldset.has_mandatory %} has-mandatory{% endif %}"
id="{{ fieldset.title|slugify }}-tab"
data-bs-toggle="tab"
@ -48,10 +49,12 @@
{% endfor %}
{% for subfieldset in fieldset.fieldsets %}
{% if subfieldset.fields %}
<h4 class="mt-3">{{ subfieldset.title }}</h4>
{% for field in subfieldset.fields %}
{% with field=form|get_field:field %}{{ field.as_field_group }}{% endwith %}
{% endfor %}
<div {% if subfieldset.is_advanced %}class="advanced-field-group collapse"{% endif %}>
<h4 class="mt-3">{{ subfieldset.title }}</h4>
{% for field in subfieldset.fields %}
{% with field=form|get_field:field %}{{ field.as_field_group }}{% endwith %}
{% endfor %}
</div>
{% endif %}
{% endfor %}
</div>