Skip to content

Commit 2389116

Browse files
committed
list_projects depends on app now
1 parent 7b29ae7 commit 2389116

File tree

2 files changed

+18
-38
lines changed

2 files changed

+18
-38
lines changed

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

Lines changed: 4 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@
2323
from ..folders import _folders_repository as _folders_repository
2424
from ..workspaces._workspaces_service import check_user_workspace_access
2525
from . import projects_service
26-
from ._permalink_api import update_or_pop_permalink_in_project
2726
from .db import ProjectDBAPI
2827
from .models import ProjectDict, ProjectTypeAPI
2928

@@ -45,29 +44,8 @@ async def _batch_update_list_of_project_dict(
4544
return list_of_project_dict
4645

4746

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-
6947
async def list_projects( # pylint: disable=too-many-arguments
70-
request: web.Request,
48+
app: web.Application,
7149
user_id: UserID,
7250
product_name: str,
7351
*,
@@ -87,7 +65,6 @@ async def list_projects( # pylint: disable=too-many-arguments
8765
# ordering
8866
order_by: OrderBy,
8967
) -> tuple[list[ProjectDict], int]:
90-
app = request.app
9168
db = ProjectDBAPI.get_from_app_context(app)
9269

9370
user_available_services: list[dict] = await get_services_for_user_in_product(
@@ -151,11 +128,12 @@ async def list_projects( # pylint: disable=too-many-arguments
151128

152129
projects: list[ProjectDict] = await logged_gather(
153130
*(
154-
_update_and_get_project_dict(
155-
request,
131+
# state
132+
projects_service.add_project_states_for_user(
156133
user_id=user_id,
157134
project=prj,
158135
is_template=prj_type == ProjectTypeDB.TEMPLATE,
136+
app=app,
159137
)
160138
for prj, prj_type in zip(db_projects, db_project_types, strict=False)
161139
),
@@ -224,13 +202,3 @@ async def list_projects_full_depth(
224202
)
225203

226204
return projects, total_number_projects
227-
228-
229-
async def get_project(
230-
request: web.Request,
231-
user_id: UserID,
232-
product_name: str,
233-
project_uuid: ProjectID,
234-
project_type: ProjectTypeAPI,
235-
):
236-
raise NotImplementedError

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

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ async def list_projects(request: web.Request):
217217
assert query_params.filters # nosec
218218

219219
projects, total_number_of_projects = await _crud_api_read.list_projects(
220-
request,
220+
request.app,
221221
user_id=req_ctx.user_id,
222222
product_name=req_ctx.product_name,
223223
project_type=query_params.project_type,
@@ -232,8 +232,20 @@ async def list_projects(request: web.Request):
232232
order_by=OrderBy.model_construct(**query_params.order_by.model_dump()),
233233
)
234234

235+
updated_projects: list[ProjectDict] = await logged_gather(
236+
# AGGREGATE data to the project from other sources and
237+
# that depend on the **request**.
238+
*(
239+
# permalink
240+
aggregate_permalink_in_project(request, project=prj)
241+
for prj in projects
242+
),
243+
reraise=True,
244+
max_concurrency=100,
245+
)
246+
235247
return _create_page_response(
236-
projects=projects,
248+
projects=updated_projects,
237249
request_url=request.url,
238250
total=total_number_of_projects,
239251
limit=query_params.limit,

0 commit comments

Comments
 (0)