Improve fieldsets
This commit is contained in:
parent
eeb5f4f04f
commit
c0aa8d17b6
4 changed files with 41 additions and 40 deletions
|
@ -7,12 +7,14 @@ class NummiFileInput(forms.ClearableFileInput):
|
|||
|
||||
class NummiForm(forms.ModelForm):
|
||||
template_name = "main/form/form_base.html"
|
||||
meta_fieldsets = []
|
||||
|
||||
def __init__(self, *args, user, **kwargs):
|
||||
super().__init__(*args, **kwargs)
|
||||
|
||||
def get_context(self):
|
||||
context = super().get_context()
|
||||
context["fieldsets"] = [[[field] for field in self]]
|
||||
|
||||
return context
|
||||
@property
|
||||
def fieldsets(self):
|
||||
for group in self.meta_fieldsets:
|
||||
yield ((self[f] for f in fieldset) for fieldset in group)
|
||||
else:
|
||||
yield ([f] for f in self)
|
||||
|
|
|
@ -16,12 +16,14 @@ form {
|
|||
.column {
|
||||
display: grid;
|
||||
grid-gap: var(--gap);
|
||||
border: 1px solid var(--gray);
|
||||
padding: var(--gap);
|
||||
|
||||
.fieldset {
|
||||
display: grid;
|
||||
grid-auto-columns: 1fr;
|
||||
grid-auto-flow: column;
|
||||
grid-gap: var(--gap);
|
||||
grid-gap: inherit;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
border: none;
|
||||
|
@ -30,8 +32,6 @@ form {
|
|||
p.field {
|
||||
display: grid;
|
||||
grid-auto-rows: min-content;
|
||||
border: 1px solid var(--gray);
|
||||
padding: 0.5rem;
|
||||
margin: 0;
|
||||
|
||||
&:has(> textarea) {
|
||||
|
|
|
@ -6,10 +6,10 @@
|
|||
{% for error in form.non_field_errors %}<li>{{ error }}</li>{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% for group in fieldsets %}
|
||||
{% if form.fieldsets %}
|
||||
{% for group in form.fieldsets %}
|
||||
<div class="column">
|
||||
{% for fieldset in group %}
|
||||
{% if fieldset|length > 1 %}
|
||||
<div class="fieldset">
|
||||
{% for field in fieldset %}
|
||||
{% if field.errors %}<p class="error">{{ field.errors }}</p>{% endif %}
|
||||
|
@ -19,18 +19,20 @@
|
|||
</p>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
{% with fieldset.0 as field %}
|
||||
<div class="column">
|
||||
{% for field in form %}
|
||||
{% if field.errors %}<p class="error">{{ field.errors }}</p>{% endif %}
|
||||
<p class="field">
|
||||
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
|
||||
{{ field }}
|
||||
</p>
|
||||
{% endwith %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
<div class="buttons">
|
||||
{% block buttons %}
|
||||
{% if not form.instance|adding %}
|
||||
|
|
|
@ -20,6 +20,21 @@ class TransactionForm(NummiForm):
|
|||
"description",
|
||||
]
|
||||
|
||||
meta_fieldsets = [
|
||||
[
|
||||
["statement"],
|
||||
["name"],
|
||||
["value"],
|
||||
[
|
||||
"date",
|
||||
"real_date",
|
||||
],
|
||||
["category"],
|
||||
["trader", "payment"],
|
||||
],
|
||||
[["description"]],
|
||||
]
|
||||
|
||||
def __init__(self, *args, **kwargs):
|
||||
_user = kwargs.get("user")
|
||||
_disable_statement = kwargs.pop("disable_statement", False)
|
||||
|
@ -39,24 +54,6 @@ class TransactionForm(NummiForm):
|
|||
if _disable_statement:
|
||||
self.fields["statement"].disabled = True
|
||||
|
||||
def get_context(self):
|
||||
context = super().get_context()
|
||||
context["fieldsets"] = [
|
||||
[
|
||||
[self["statement"]],
|
||||
[self["name"]],
|
||||
[self["value"]],
|
||||
[self["date"], self["real_date"]],
|
||||
[self["category"]],
|
||||
[self["trader"], self["payment"]],
|
||||
],
|
||||
[
|
||||
[self["description"]],
|
||||
],
|
||||
]
|
||||
|
||||
return context
|
||||
|
||||
|
||||
class InvoiceForm(NummiForm):
|
||||
prefix = "invoice"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue