@@ -49,7 +49,7 @@ def _db_to_api_model(
49
49
description = service_db .description ,
50
50
description_ui = service_db .description_ui ,
51
51
version_display = service_db .version_display ,
52
- type = service_manifest .service_type ,
52
+ service_type = service_manifest .service_type ,
53
53
contact = service_manifest .contact ,
54
54
authors = service_manifest .authors ,
55
55
owner = (service_db .owner_email if service_db .owner_email else None ),
@@ -340,8 +340,9 @@ async def check_for_service(
340
340
341
341
342
342
async def batch_get_my_services (
343
- * ,
344
343
repo : ServicesRepository ,
344
+ director_api : DirectorApi ,
345
+ * ,
345
346
product_name : ProductName ,
346
347
user_id : UserID ,
347
348
ids : list [
@@ -352,18 +353,49 @@ async def batch_get_my_services(
352
353
],
353
354
) -> list [MyServiceGet ]:
354
355
355
- raise NotImplementedError
356
+ services_access_rights = await repo .batch_get_services_access_rights (
357
+ key_versions = ids , product_name = product_name
358
+ )
356
359
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
+ }
358
367
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
+ )
360
374
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
+ )
362
381
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
+ )
365
388
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
+ )
367
400
368
- # if service_access_rights_db.gid in user_groups:
369
- # my_access_rights.append()
401
+ return my_services
0 commit comments