Addign links to entry pages.

This commit is contained in:
Yaro Kasear 2025-10-14 11:33:21 -05:00
parent 775600e140
commit 668924ba10
5 changed files with 121 additions and 10 deletions

View file

@ -639,9 +639,14 @@ def _normalize_field_spec(spec, mapper, session, label_specs_model_default):
"template": spec.get("template"),
"template_name": spec.get("template_name"),
"template_ctx": spec.get("template_ctx"),
"label_spec": spec.get("label_spec")
"label_spec": spec.get("label_spec"),
}
if "link" in spec:
field["link"] = spec["link"]
if "label_deps" in spec:
field["label_deps"] = spec["label_deps"]
if rel_prop:
if field["type"] is None:
field["type"] = "select"
@ -970,6 +975,7 @@ def _format_label_from_values(spec: Any, values: dict) -> Optional[str]:
return "" if v is None else str(v)
def _build_href(spec: Dict[str, Any], row: Dict[str, Any], obj) -> Optional[str]:
print(spec)
if not spec:
return None
params = {}
@ -982,6 +988,7 @@ def _build_href(spec: Dict[str, Any], row: Dict[str, Any], obj) -> Optional[str]
params[k] = val
else:
params[k] = v
print(params)
if any(v is None for v in params.values()):
return None
try:
@ -1061,6 +1068,7 @@ def render_field(field, value):
label_attrs=_sanitize_attrs(field.get('label_attrs') or {}),
help=field.get('help'),
value_label=field.get('value_label'),
link_href=field.get("link_href"),
)
@ -1231,6 +1239,15 @@ def render_form(
if vl2 is not None:
f["value_label"] = vl2
link_spec = f.get("link")
if link_spec:
try:
href = _build_href(link_spec, values_map, instance)
except Exception:
href = None
if href:
f["link_href"] = href
# Build rows (supports nested layout with parents)
rows_map = _normalize_rows_layout(layout)
rows_tree = _assign_fields_to_rows(fields, rows_map)

View file

@ -4,7 +4,13 @@
{% if label_attrs %}{% for k,v in label_attrs.items() %}
{{k}}{% if v is not sameas true %}="{{ v }}"{% endif %}
{% endfor %}{% endif %}>
{{ field_label }}
{% if link_href %}
<a href="{{ link_href }}">
{% endif %}
{{ field_label }}
{% if link_href %}
</a>
{% endif %}
</label>
{% endif %}