1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
{% extends "base.html" %}
{% block title %}{{ title }} — rustango admin{% endblock title %}
{% block body %}
{{ admin_title }}
{{ model.name }}
{% if edit_pk %}#{{ edit_pk }}{% endif %}
{{ title }}
{{ title }}
{% if error %}
{{ error }}
{% endif %}
{% for set in fieldsets %}
{% if set.title %}{{ set.title }}{% endif %}
{% for row in set.rows %}
{{ row.label }}{{ row.extra | safe }}
{{ row.input | safe }}
{# Django-shape help text rendered as a muted caption under
the input. `None` (no `#[rustango(help_text = "…")]`) is
falsy in Tera so nothing renders. #}
{% if row.help_text %}{{ row.help_text }}{% endif %}
{% endfor %}
{% endfor %}
{# #50 slice 2 — editable inline panels. Mirrors the read-only
layout in `_inline_panels.html` but each cell renders an
and each panel carries the FormSet management form. #}
{% if inline_form_panels and inline_form_panels | length > 0 %}
{% for panel in inline_form_panels %}
{{ panel.label }}
{% if panel.kind == "tabular" %}
{% for label in panel.field_labels %}{{ label }}{% endfor %}
{% for row in panel.rows %}
{% for cell in row.cells %}{{ cell.input_html | safe }}{% endfor %}
{% if row.pk %}{{ row.delete_input_html | safe }}{{ row.hidden_pk | safe }}{% endif %}
{% if not row.pk and panel.initial_forms > 0 %}{% endif %}
{% endfor %}
{% else %}
{# stacked #}
{% for row in panel.rows %}
{% if row.pk %}
#{{ row.pk }}
{{ row.hidden_pk | safe }}
{% else %}
New
{% endif %}
{% for cell in row.cells %}
{{ cell.label }}
{{ cell.input_html | safe }}
{% endfor %}
{% if row.pk %}
Delete
{{ row.delete_input_html | safe }}
{% endif %}
{% endfor %}
{% endif %}
{% endfor %}
{% endif %}
Save
Save and continue editing
Save and add another
{% endblock body %}