Skip to content

Commit f382a0d

Browse files
improve delete workspace
1 parent 696a19b commit f382a0d

File tree

3 files changed

+19
-35
lines changed

3 files changed

+19
-35
lines changed

services/web/server/src/simcore_service_webserver/folders/_folders_service.py

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,8 @@
1111
from models_library.users import UserID
1212
from models_library.workspaces import WorkspaceID, WorkspaceQuery, WorkspaceScope
1313
from pydantic import NonNegativeInt
14-
from servicelib.aiohttp.application_keys import APP_FIRE_AND_FORGET_TASKS_KEY
15-
from servicelib.common_headers import UNDEFINED_DEFAULT_SIMCORE_USER_AGENT_VALUE
16-
from servicelib.utils import fire_and_forget_task
1714

18-
from ..projects._projects_service import submit_delete_project_task
15+
from ..projects._projects_service import delete_project_by_user
1916
from ..users.api import get_user
2017
from ..workspaces.api import check_user_workspace_access
2118
from ..workspaces.errors import (
@@ -362,17 +359,11 @@ async def delete_folder(
362359
)
363360
)
364361

365-
# fire and forget task for project deletion
366362
for project_id in project_id_list:
367-
fire_and_forget_task(
368-
submit_delete_project_task(
369-
app,
370-
project_uuid=project_id,
371-
user_id=user_id,
372-
simcore_user_agent=UNDEFINED_DEFAULT_SIMCORE_USER_AGENT_VALUE,
373-
),
374-
task_suffix_name=f"delete_project_task_{project_id}",
375-
fire_and_forget_tasks_collection=app[APP_FIRE_AND_FORGET_TASKS_KEY],
363+
await delete_project_by_user(
364+
app,
365+
project_uuid=project_id,
366+
user_id=user_id,
376367
)
377368

378369
# 1.2 Delete all child folders

services/web/server/src/simcore_service_webserver/workspaces/_trash_service.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
from ..folders._trash_service import trash_folder, untrash_folder
2424
from ..projects._crud_api_read import ProjectTypeAPI, list_projects
2525
from ..projects._trash_service import trash_project, untrash_project
26-
from . import _workspaces_repository, _workspaces_service
26+
from . import _workspaces_repository, _workspaces_service, _workspaces_service_crud_read
2727
from .errors import WorkspaceNotTrashedError
2828

2929
_logger = logging.getLogger(__name__)
@@ -36,7 +36,7 @@ async def _check_exists_and_access(
3636
user_id: UserID,
3737
workspace_id: WorkspaceID,
3838
):
39-
await _workspaces_service.check_user_workspace_access(
39+
await _workspaces_service_crud_read.check_user_workspace_access(
4040
app=app,
4141
user_id=user_id,
4242
workspace_id=workspace_id,
@@ -237,7 +237,7 @@ async def delete_trashed_workspace(
237237
until_equal_datetime: datetime | None = None,
238238
) -> None:
239239

240-
workspace = await _workspaces_service.get_workspace(
240+
workspace = await _workspaces_service_crud_read.get_workspace(
241241
app,
242242
user_id=user_id,
243243
product_name=product_name,
@@ -276,7 +276,7 @@ async def list_trashed_workspaces(
276276
(
277277
page_params.total_number_of_items,
278278
workspaces,
279-
) = await _workspaces_service.list_workspaces(
279+
) = await _workspaces_service_crud_read.list_workspaces(
280280
app,
281281
user_id=user_id,
282282
product_name=product_name,

services/web/server/src/simcore_service_webserver/workspaces/_workspaces_service.py

Lines changed: 10 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
# pylint: disable=unused-argument
22

3-
import asyncio
43
import logging
54

65
from aiohttp import web
@@ -87,9 +86,9 @@ async def update_workspace(
8786
async def delete_workspace(
8887
app: web.Application,
8988
*,
89+
product_name: ProductName,
9090
user_id: UserID,
9191
workspace_id: WorkspaceID,
92-
product_name: ProductName,
9392
) -> None:
9493
await check_user_workspace_access(
9594
app=app,
@@ -125,12 +124,10 @@ async def delete_workspace(
125124
]
126125

127126
# Delete projects properly
128-
await asyncio.gather(
129-
*(
130-
delete_project_by_user(app, project_uuid=project_uuid, user_id=user_id)
131-
for project_uuid in workspace_root_projects
127+
for project_uuid in workspace_root_projects:
128+
await delete_project_by_user(
129+
app, project_uuid=project_uuid, user_id=user_id
132130
)
133-
)
134131

135132
# Get all root folders
136133
for page_params in iter_pagination_params(limit=MAXIMUM_NUMBER_OF_ITEMS_PER_PAGE):
@@ -154,17 +151,13 @@ async def delete_workspace(
154151
]
155152

156153
# Delete folders properly
157-
await asyncio.gather(
158-
*(
159-
delete_folder(
160-
app,
161-
user_id=user_id,
162-
product_name=product_name,
163-
folder_id=folder_id,
164-
)
165-
for folder_id in workspace_root_folders
154+
for folder_id in workspace_root_folders:
155+
await delete_folder(
156+
app,
157+
user_id=user_id,
158+
product_name=product_name,
159+
folder_id=folder_id,
166160
)
167-
)
168161

169162
await db.delete_workspace(
170163
app,

0 commit comments

Comments
 (0)