diff --git a/app/services/snapshot_mgmt_service.py b/app/services/snapshot_mgmt_service.py index 0dec007..0f8b954 100644 --- a/app/services/snapshot_mgmt_service.py +++ b/app/services/snapshot_mgmt_service.py @@ -29,6 +29,7 @@ except ImportError: # PatchCenter v2 : `_YYYY-MM-DD_HH-MM_avant_patch` (user = login JWT, depuis 2026-05-07) # PatchCenter v1 : `_YYYY-MM-DD_avant_patch` (legacy, basé sur intervenant) # .exe SLPM : `SLPM__YYYYMMDD_HHMM` +# manuel SANEF : `[ _]...` — fallback, premier token = auteur SNAP_PATCHCENTER_V2_RE = re.compile( r"^(?P[A-Za-z0-9_\-\.]+)_(?P\d{4}-\d{2}-\d{2})_\d{2}-\d{2}_avant_patch$" ) @@ -38,12 +39,16 @@ SNAP_PATCHCENTER_V1_RE = re.compile( SNAP_SLPM_RE = re.compile( r"^SLPM_(?P[A-Za-z0-9_\-\.]+)_\d{8}_\d{4}$" ) +SNAP_MANUAL_RE = re.compile( + r"^(?P[A-Za-z0-9][A-Za-z0-9_\-\.]{1,})[\s_]" +) def _detect_snap_origin(name: str): """Renvoie (origin, author) ou (None, None) si format inconnu. - origin in {'patchcenter', 'slpm'} ; author = préfixe utilisateur. - PatchCenter v2 (avec heure) testé en premier pour ne pas matcher v1.""" + origin in {'patchcenter', 'slpm', 'manual'} ; author = préfixe utilisateur. + PatchCenter v2 (avec heure) testé en premier pour ne pas matcher v1. + 'manual' = fallback : premier token (avant espace ou underscore) = auteur.""" n = name or "" m = SNAP_PATCHCENTER_V2_RE.match(n) if m: @@ -54,6 +59,9 @@ def _detect_snap_origin(name: str): m = SNAP_SLPM_RE.match(n) if m: return "slpm", m.group("author") + m = SNAP_MANUAL_RE.match(n) + if m: + return "manual", m.group("author") return None, None @@ -114,7 +122,7 @@ def _walk_snapshots(snapshot_list, vm, vcenter_name, vcenter_id, vm_moid, parent "created_at": created_iso, "age_days": round(age_days, 2) if age_days is not None else None, "author": author, - "origin": origin, # 'patchcenter' | 'slpm' | None + "origin": origin, # 'patchcenter' | 'slpm' | 'manual' | None "is_managed_format": is_managed, # any des 2 formats SecOps "is_patchcenter_format": origin == "patchcenter", "is_current": bool(getattr(s, "id", None) and vm.snapshot and vm.snapshot.currentSnapshot diff --git a/app/templates/snapshots.html b/app/templates/snapshots.html index 1ffc489..541d4ac 100644 --- a/app/templates/snapshots.html +++ b/app/templates/snapshots.html @@ -66,10 +66,16 @@

Users actifs (hors admins) — défaut = toi.

-
+
+
+ +