Skip to content

Commit 8c45791

Browse files
committed
Allow users to delete their only project
The restriction preventing users from deleting their only project was originally introduced because the UI could not function correctly without projects, which is no longer the case.
1 parent 237ddd1 commit 8c45791

2 files changed

Lines changed: 3 additions & 5 deletions

File tree

src/dstack/_internal/server/services/projects.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -199,8 +199,6 @@ async def delete_projects(
199199
for project in projects_to_delete:
200200
if not _is_project_admin(user=user, project=project):
201201
raise ForbiddenError()
202-
if all(name in projects_names for name in user_project_names):
203-
raise ServerClientError("Cannot delete the only project")
204202

205203
res = await session.execute(
206204
select(ProjectModel)

src/tests/_internal/server/routers/test_projects.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ async def test_returns_40x_if_not_authenticated(self, test_db, client: AsyncClie
453453

454454
@pytest.mark.asyncio
455455
@pytest.mark.parametrize("test_db", ["sqlite", "postgres"], indirect=True)
456-
async def test_cannot_delete_the_only_project(
456+
async def test_deletes_the_only_project(
457457
self, test_db, session: AsyncSession, client: AsyncClient
458458
):
459459
user = await create_user(session=session, global_role=GlobalRole.USER)
@@ -466,9 +466,9 @@ async def test_cannot_delete_the_only_project(
466466
headers=get_auth_headers(user.token),
467467
json={"projects_names": [project.name]},
468468
)
469-
assert response.status_code == 400
469+
assert response.status_code == 200
470470
await session.refresh(project)
471-
assert not project.deleted
471+
assert project.deleted
472472

473473
@pytest.mark.asyncio
474474
@pytest.mark.parametrize("test_db", ["sqlite", "postgres"], indirect=True)

0 commit comments

Comments
 (0)