Your data: import your own archive through the interface, to move between instances without a shell #1096

Open
opened 2026-10-30 21:25:15 +00:00 by tiagoagueda · 0 comments
Owner

The wiki's Roadmap lists it as still wanted: moving an account between instances without a shell. Today one person's export is read back only from the command line, and the backup restore page prints the command to run.

What exists today

  • Export (core/export.py, core/views_export.py) writes one person's archive: a JSON document and every file, in one zip.
  • manage.py import_data (core/importer.py) reads it back, with ImportReport and the format upgrades.
  • Server settings → Backups verifies an instance backup and prints manage.py restore with its flags (core/views_backups.py:308). It does not restore.
  • Per-kind imports exist in the interface: CSV (core/views_import.py), vCard, iCalendar, Europass, and the per-entity JSON of #659.

What would change

  • Your data → Import an archive: upload one's own export, see what it holds (counts per kind, clashes with what is here), choose to add or to merge, then import as an errand with a report at the end.
  • The same signature and size rules as a backup upload.

Decisions

  • Merge rules. Recommended: follow what the per-kind importers settled (#659): match by each kind's natural key, never overwrite without asking, keep both when in doubt.
  • Instance restore in the browser. Recommended: out of scope. It replaces everybody's data and stays a shell act.

Checked against main at daee30b15 (2026-10-30). From the status review and feature suggestions of 2026-10-30.

The wiki's *Roadmap* lists it as still wanted: moving an account between instances without a shell. Today one person's export is read back only from the command line, and the backup restore page prints the command to run. ## What exists today - *Export* (`core/export.py`, `core/views_export.py`) writes one person's archive: a JSON document and every file, in one zip. - `manage.py import_data` (`core/importer.py`) reads it back, with `ImportReport` and the format upgrades. - *Server settings → Backups* verifies an instance backup and prints `manage.py restore` with its flags (`core/views_backups.py:308`). It does not restore. - Per-kind imports exist in the interface: CSV (`core/views_import.py`), vCard, iCalendar, Europass, and the per-entity JSON of #659. ## What would change - *Your data → Import an archive*: upload one's own export, see what it holds (counts per kind, clashes with what is here), choose to add or to merge, then import as an errand with a report at the end. - The same signature and size rules as a backup upload. ## Decisions - **Merge rules.** Recommended: follow what the per-kind importers settled (#659): match by each kind's natural key, never overwrite without asking, keep both when in doubt. - **Instance restore in the browser.** Recommended: out of scope. It replaces everybody's data and stays a shell act. Checked against `main` at `daee30b15` (2026-10-30). From the status review and feature suggestions of 2026-10-30.
tiagoagueda added this to the 1.0.0 milestone 2026-10-30 21:25:15 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Postulo/postulo#1096
No description provided.