Skip to content

Commit f20baa4

Browse files
committed
draft
1 parent 1cbfe4d commit f20baa4

File tree

1 file changed

+43
-11
lines changed

1 file changed

+43
-11
lines changed

services/catalog/src/simcore_service_catalog/services/services_api.py

Lines changed: 43 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ def _db_to_api_model(
4949
description=service_db.description,
5050
description_ui=service_db.description_ui,
5151
version_display=service_db.version_display,
52-
type=service_manifest.service_type,
52+
service_type=service_manifest.service_type,
5353
contact=service_manifest.contact,
5454
authors=service_manifest.authors,
5555
owner=(service_db.owner_email if service_db.owner_email else None),
@@ -340,8 +340,9 @@ async def check_for_service(
340340

341341

342342
async def batch_get_my_services(
343-
*,
344343
repo: ServicesRepository,
344+
director_api: DirectorApi,
345+
*,
345346
product_name: ProductName,
346347
user_id: UserID,
347348
ids: list[
@@ -352,18 +353,49 @@ async def batch_get_my_services(
352353
],
353354
) -> list[MyServiceGet]:
354355

355-
raise NotImplementedError
356+
services_access_rights = await repo.batch_get_services_access_rights(
357+
key_versions=ids, product_name=product_name
358+
)
356359

357-
# user_groups = []
360+
my_services = []
361+
for service_key, service_version in ids:
362+
access_rights = services_access_rights.get((service_key, service_version), [])
363+
my_access_rights = {
364+
"read": any(ar.execute_access for ar in access_rights),
365+
"write": any(ar.write_access for ar in access_rights),
366+
}
358367

359-
# result = []
368+
service = await repo.get_service_with_history(
369+
product_name=product_name,
370+
user_id=user_id,
371+
key=service_key,
372+
version=service_version,
373+
)
360374

361-
# services_access_rights = await repo.batch_get_services_access_rights(key_versions=ids, product_name=product_name)
375+
if service:
376+
service_manifest = await manifest.get_service(
377+
key=service_key,
378+
version=service_version,
379+
director_client=director_api,
380+
)
362381

363-
# for service_key, service_version in ids:
364-
# my_access_rights = {"read": False, "execute": False}
382+
compatibility_map = await evaluate_service_compatibility_map(
383+
repo,
384+
product_name=product_name,
385+
user_id=user_id,
386+
service_release_history=service.history,
387+
)
365388

366-
# if (service_access_rights_db := services_access_rights.get((service_key,service_version)))
389+
my_services.append(
390+
MyServiceGet(
391+
**_db_to_api_model(
392+
service_db=service,
393+
access_rights_db=access_rights,
394+
service_manifest=service_manifest,
395+
compatibility_map=compatibility_map,
396+
).model_dump(),
397+
my_access_rights=my_access_rights,
398+
)
399+
)
367400

368-
# if service_access_rights_db.gid in user_groups:
369-
# my_access_rights.append()
401+
return my_services

0 commit comments

Comments
 (0)