@@ -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
342342async 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