Skip to content

Commit 4e0810c

Browse files
committed
fixes update
1 parent e01614b commit 4e0810c

File tree

3 files changed

+41
-17
lines changed

3 files changed

+41
-17
lines changed

services/web/server/src/simcore_service_webserver/projects/_crud_api_read.py

Lines changed: 26 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,6 @@
2828
from .models import ProjectDict, ProjectTypeAPI
2929

3030

31-
async def _sequential_execution(*coros):
32-
for coro in coros:
33-
await coro # Ensures each coroutine runs in sequence
34-
35-
3631
async def _batch_update_list_of_project_dict(
3732
app: web.Application, list_of_project_dict: list[ProjectDict]
3833
) -> list[ProjectDict]:
@@ -50,6 +45,27 @@ async def _batch_update_list_of_project_dict(
5045
return list_of_project_dict
5146

5247

48+
async def _update_and_get_project_dict(
49+
request: web.Request,
50+
*,
51+
user_id: UserID,
52+
project: ProjectDict,
53+
is_template: bool,
54+
) -> ProjectDict:
55+
# state
56+
await projects_service.add_project_states_for_user(
57+
user_id=user_id,
58+
project=project,
59+
is_template=is_template,
60+
app=request.app,
61+
)
62+
63+
# permalink
64+
await update_or_pop_permalink_in_project(request, project)
65+
66+
return project
67+
68+
5369
async def list_projects( # pylint: disable=too-many-arguments
5470
request: web.Request,
5571
user_id: UserID,
@@ -135,16 +151,11 @@ async def list_projects( # pylint: disable=too-many-arguments
135151

136152
projects: list[ProjectDict] = await logged_gather(
137153
*(
138-
_sequential_execution(
139-
# state
140-
projects_service.add_project_states_for_user(
141-
user_id=user_id,
142-
project=prj,
143-
is_template=prj_type == ProjectTypeDB.TEMPLATE,
144-
app=request.app,
145-
),
146-
# permalink
147-
update_or_pop_permalink_in_project(request, project=prj),
154+
_update_and_get_project_dict(
155+
request,
156+
user_id=user_id,
157+
project=prj,
158+
is_template=prj_type == ProjectTypeDB.TEMPLATE,
148159
)
149160
for prj, prj_type in zip(db_projects, db_project_types, strict=False)
150161
),

services/web/server/src/simcore_service_webserver/projects/_crud_handlers.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,10 @@
6262
ProjectsListQueryParams,
6363
ProjectsSearchQueryParams,
6464
)
65-
from ._permalink_api import update_or_pop_permalink_in_project
65+
from ._permalink_api import (
66+
aggregate_permalink_in_project,
67+
update_or_pop_permalink_in_project,
68+
)
6669
from .exceptions import (
6770
ProjectDeleteError,
6871
ProjectInvalidRightsError,
@@ -270,7 +273,7 @@ async def list_projects_full_search(request: web.Request):
270273
# that depend on the **request**.
271274
*(
272275
# permalink
273-
update_or_pop_permalink_in_project(request, prj)
276+
aggregate_permalink_in_project(request, project=prj)
274277
for prj in projects
275278
),
276279
reraise=True,

services/web/server/src/simcore_service_webserver/projects/_permalink_api.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,14 @@ async def update_or_pop_permalink_in_project(
7777
return None
7878

7979

80+
async def aggregate_permalink_in_project(
81+
request: web.Request, project: ProjectDict
82+
) -> ProjectDict:
83+
"""
84+
Adapter to use in parallel aggregation of fields in a project dataset
85+
"""
86+
await update_or_pop_permalink_in_project(request, project)
87+
return project
88+
89+
8090
__all__: tuple[str, ...] = ("ProjectPermalink",)

0 commit comments

Comments
 (0)