webapp/reports: trim list to Serial/Model/Date/Result
Drops the filename, type, and size columns from the Blancco Reports list - operators want bay-identification fields, not file metadata. Filename moves to a row hover tooltip (title attribute) so it is still recoverable for ad-hoc lookups. Adds a Result column derived from each XML report's overall erasure state: * Successful -> green badge (all erasure entries report Successful) * Failed -> red badge (any erasure entry reports a non-Successful state) * other -> grey badge with the verbatim state * blank/non-XML -> dash The state roll-up lives in the blancco_reports route's per-file parse loop next to the existing serial/model extraction. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -373,12 +373,24 @@ def blancco_reports():
|
||||
# negligible at fleet sizes).
|
||||
serial = ""
|
||||
model = ""
|
||||
state = ""
|
||||
if ext == ".xml":
|
||||
try:
|
||||
data = blancco_report.parse(fpath)
|
||||
sysinfo = (data.get("hardware") or {}).get("system") or {}
|
||||
serial = sysinfo.get("serial", "") or ""
|
||||
model = sysinfo.get("model", "") or ""
|
||||
# Overall erasure result: each erasure entry has its own
|
||||
# 'state' (Successful / Failed / ...). If any drive failed
|
||||
# the report rolls up to Failed; otherwise Successful.
|
||||
erasures = data.get("erasures") or []
|
||||
states = [(e.get("state") or "").strip() for e in erasures if e.get("state")]
|
||||
if not states:
|
||||
state = ""
|
||||
elif any(s.lower() != "successful" for s in states):
|
||||
state = "Failed"
|
||||
else:
|
||||
state = "Successful"
|
||||
except Exception:
|
||||
pass
|
||||
reports.append({
|
||||
@@ -388,6 +400,7 @@ def blancco_reports():
|
||||
"type": ext.lstrip(".").upper() or "FILE",
|
||||
"serial": serial,
|
||||
"model": model,
|
||||
"state": state,
|
||||
})
|
||||
return render_template(
|
||||
"reports.html",
|
||||
|
||||
Reference in New Issue
Block a user