Add HTML5 focused object report
This commit is contained in:
@@ -339,6 +339,52 @@ def render_html5_project_report(project_id: str, report: dict | None) -> str:
|
||||
"""
|
||||
|
||||
|
||||
def render_html5_object_report(
|
||||
project_id: str,
|
||||
impact: object,
|
||||
*,
|
||||
access: object | None = None,
|
||||
privacy: object | None = None,
|
||||
runtime: Iterable[object] | None = None,
|
||||
integrations: Iterable[object] | None = None,
|
||||
oob: bool = False,
|
||||
) -> str:
|
||||
obj = getattr(impact, "object", None)
|
||||
name = getattr(obj, "qualified_name", None) or getattr(obj, "name", None) or getattr(impact, "object_name", "object")
|
||||
grants = getattr(access, "grants", []) if access is not None else []
|
||||
markers = getattr(privacy, "markers", []) if privacy is not None else []
|
||||
runtime_items = list(runtime or [])
|
||||
integration_items = list(integrations or [])
|
||||
metrics = [
|
||||
("Routines", len(getattr(impact, "routines", []) or [])),
|
||||
("Commands", len(getattr(impact, "commands", []) or [])),
|
||||
("Reads", len(getattr(impact, "query_tables", []) or [])),
|
||||
("Writes", len(getattr(impact, "writes", []) or [])),
|
||||
("Roles", len(grants) or len(getattr(impact, "roles", []) or [])),
|
||||
("Runtime", len(runtime_items)),
|
||||
("Privacy", len(markers)),
|
||||
("Integrations", len(integration_items)),
|
||||
]
|
||||
oob_attr = ' hx-swap-oob="outerHTML"' if oob else ""
|
||||
return f"""
|
||||
<div
|
||||
class="report-panel"
|
||||
data-html5-project-report
|
||||
hx-get="/html5/projects/{quote(project_id)}/report"
|
||||
hx-trigger="every 15s"
|
||||
hx-swap="outerHTML"
|
||||
{oob_attr}
|
||||
>
|
||||
<div class="panel-title">Отчет объекта</div>
|
||||
<article class="object-focus">
|
||||
<strong>{escape(str(name))}</strong>
|
||||
<span>server focused summary</span>
|
||||
</article>
|
||||
<dl class="report-grid">{''.join(_metric(label, value) for label, value in metrics)}</dl>
|
||||
</div>
|
||||
"""
|
||||
|
||||
|
||||
def render_html5_review(project_id: str, findings: list[dict] | None) -> str:
|
||||
if findings is None:
|
||||
return f"""
|
||||
|
||||
Reference in New Issue
Block a user