Enable re-use of Project path when a project is deleted
Problem to solve
While a project is pending deletion, its url slug remains taken. This leads to a cumbersome workaround in order to make it available again. An owner or administator can either change the path or they can bypass the delay by deleting the project again.
Things to consider:
- As this is a pre-requisite for #343577, if a project is deleted we need to make sure that the project is not accessible to the free users even when with the changed path as we mention that the project is deleted immediately.
- When a project is pending deletion, Premium+ users should have read-only access to the project at the URL. Free users should NOT have access.
Proposal
This comes from the need to support soft deletion, where the user wants to immediately re-use the same project name.
From #255449 (comment 499630633):
- Once a project is marked for deletion, we also change the project path so that the current path can be reused. As suggested by @acroitor, it could be
<project_path>-deleted-<project_id>
or we could use a UUID.- When we want to restore the project, we just rename the project path again, deleting the suffix, then mark the project as restored.
- If a project with that path already exists, we can prompt the user for a new path to restore to.
Pros:
- Renaming the project path is already something we support via the UI. So implementing this should be fairly straightforward.
- When the project path is changed, we create a redirect so that it is still accessible with the old URLs (read-only because it is marked for deletion). When a new project is created with the old path, the redirects are automatically removed. This is already done by our existing path rename logic.
Cons:
- Might be surprising to the user that the project has a different path
This is required for #255449 (closed)
Edited by Dan Jensen