Record snapshot purge history whenever retention or incomplete cleanup removes snapshot directories and SQL records. Store the purge reason, original kind, path, action source, and triggering operator so manual, scheduled, CLI, and incomplete cleanup actions remain auditable after the original snapshot record is deleted. Add a staff-only Purged Snapshots page with host/action filters and register the audit model in Django admin. Refs #16 Refs #8
54 lines
3.0 KiB
Python
54 lines
3.0 KiB
Python
from __future__ import annotations
|
|
|
|
from django.contrib import admin
|
|
from django.urls import path
|
|
|
|
from pobsync_backend import api, views
|
|
|
|
|
|
urlpatterns = [
|
|
path("", views.dashboard, name="dashboard"),
|
|
path("changelog/", views.changelog, name="changelog"),
|
|
path("self-check/", views.self_check, name="self_check"),
|
|
path("logs/", views.logs, name="logs"),
|
|
path("purged-snapshots/", views.purged_snapshots, name="purged_snapshots"),
|
|
path("config/global/", views.edit_global_config, name="edit_global_config"),
|
|
path("ssh-credentials/", views.ssh_credentials, name="ssh_credentials"),
|
|
path("ssh-credentials/new/", views.create_ssh_credential, name="create_ssh_credential"),
|
|
path("ssh-credentials/generate/", views.generate_ssh_credential, name="generate_ssh_credential"),
|
|
path("ssh-credentials/<int:credential_id>/", views.edit_ssh_credential, name="edit_ssh_credential"),
|
|
path("ssh-credentials/<int:credential_id>/delete/", views.delete_ssh_credential, name="delete_ssh_credential"),
|
|
path("hosts/new/", views.create_host_config, name="create_host_config"),
|
|
path("hosts/<str:host>/", views.host_detail, name="host_detail"),
|
|
path("hosts/<str:host>/config/", views.edit_host_config, name="edit_host_config"),
|
|
path("hosts/<str:host>/prepare-directories/", views.prepare_host_directories, name="prepare_host_directories"),
|
|
path("hosts/<str:host>/scan-known-key/", views.scan_host_known_key, name="scan_host_known_key"),
|
|
path("hosts/<str:host>/preflight/", views.run_host_preflight, name="run_host_preflight"),
|
|
path("hosts/<str:host>/queue-backup/", views.queue_manual_backup, name="queue_manual_backup"),
|
|
path("hosts/<str:host>/discover-snapshots/", views.discover_host_snapshots, name="discover_host_snapshots"),
|
|
path("hosts/<str:host>/retention-apply/", views.apply_host_retention, name="apply_host_retention"),
|
|
path("hosts/<str:host>/retention-plan/", views.host_retention_plan, name="host_retention_plan"),
|
|
path(
|
|
"hosts/<str:host>/incomplete-cleanup/",
|
|
views.cleanup_host_incomplete_snapshots,
|
|
name="cleanup_host_incomplete_snapshots",
|
|
),
|
|
path("hosts/<str:host>/schedule/", views.edit_host_schedule, name="edit_host_schedule"),
|
|
path("runs/<int:run_id>/", views.run_detail, name="run_detail"),
|
|
path("runs/<int:run_id>/rsync-log/", views.run_rsync_log, name="run_rsync_log"),
|
|
path("runs/<int:run_id>/cancel/", views.cancel_run, name="cancel_run"),
|
|
path("runs/<int:run_id>/resolve-review/", views.resolve_run_review, name="resolve_run_review"),
|
|
path(
|
|
"hosts/<str:host>/resolve-incomplete-reviews/",
|
|
views.resolve_host_incomplete_reviews,
|
|
name="resolve_host_incomplete_reviews",
|
|
),
|
|
path("snapshots/<int:snapshot_id>/", views.snapshot_detail, name="snapshot_detail"),
|
|
path("api/", api.api_index),
|
|
path("api/status/", api.status),
|
|
path("api/hosts/", api.hosts),
|
|
path("api/snapshots/", api.snapshots),
|
|
path("api/runs/", api.runs),
|
|
path("admin/", admin.site.urls),
|
|
]
|