mirror of
https://github.com/lrnselfreliance/wrolpi.git
synced 2026-10-26 10:51:36 -04:00
Inventories are a config-only MultiFileConfig (config/inventory/<slug>.yaml) and were not reachable by the admin config Restore UI, so there was no way to re-import a hand-edited/copied-in file or restore an inventory from its daily backup. Backend: - MultiFileConfig gains generic helpers: get_backup_dates(slug)/_get_backup_file (surface the daily config/backup/<subdir>/<slug>-DATE.yaml files) and reimport() (rebuild the in-memory store from disk; picks up hand-edits and copied-in files, drops files deleted on disk). backup_date is constrained to YYYYMMDD so it cannot traverse out of the backup directory. - InventoriesConfig.preview_restore/apply_restore: overwrite replaces the whole inventory; merge unions items by id (keeps current fields and existing items). The pre-restore state is backed up automatically, so a restore is undoable. - API: POST /inventory/reimport, GET /inventory/<slug>/backups, POST /inventory/<slug>/restore/preview, POST /inventory/<slug>/restore. Frontend: - New InventoryImportModal (opened from a Restore button in the Inventory toolbar): Re-import from disk, plus a dated-backup table with per-row Merge/Overwrite that previews the change before applying. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| __init__.py | ||
| test_api.py | ||
| test_catalog.py | ||
| test_inventory.py | ||
| test_migration.py | ||
| test_multifile_config.py | ||