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