Feature #17493
Updated by Peter Amstutz about 3 years ago
Feature: user can put a project tree in "archive" state which makes it read-only to everyone Proposed design: * New attribute of group "archived" "archive_at" * Users with can_manage access can set "archived" modify "archive_at" * ** "archive_at" field itself can be modified when null or "now < archive_at" ** Once set, "archived" "now >= archive_at" the archive_at field cannot be cleared modified by users, only admins * Read-only when archive_at is non-null, *but* if "now < archive_at" a user with can_manage permission is allowed to clear "archive_at" to make updates. * "archived" state applies to everything owned by the project, recursively. (same behavior as "trashed" projects) * Archived objects are read-only for users and admins regardless of permissions (with limited exceptions for the archived_at field itself described above) ** Cannot create/move objects in an archived project (owner_uuid cannot be an archived project) ** Cannot move objects out of an archived project (owner_uuid cannot be changed) ** Cannot update any other field on archived objects, e.g. name, manifest_text ** Cannot delete objects owned by archived project or modify trash_at, delete_at ** Setting "archived" "archive" clears any "delete_at" fields of any object in the archived project ** Objects that were trashed before remain trashed, but will not be deleted * Users with can_manage permission can still adjust sharing (create and remove permission links on archived objects)