@@ -328,6 +328,27 @@ async def upsert_project_linked_product(
328328 .on_conflict_do_nothing ()
329329 )
330330
331+ access_rights_subquery = (
332+ sa .select (
333+ project_to_groups .c .project_uuid ,
334+ sa .func .jsonb_object_agg (
335+ project_to_groups .c .gid ,
336+ sa .func .jsonb_build_object (
337+ "read" ,
338+ project_to_groups .c .read ,
339+ "write" ,
340+ project_to_groups .c .write ,
341+ "delete" ,
342+ project_to_groups .c .delete ,
343+ ),
344+ )
345+ .filter (
346+ project_to_groups .c .read # Filters out entries where "read" is False
347+ )
348+ .label ("access_rights" ),
349+ ).group_by (project_to_groups .c .project_uuid )
350+ ).subquery ("access_rights_subquery" )
351+
331352 async def list_projects ( # pylint: disable=too-many-arguments
332353 self ,
333354 * ,
@@ -360,30 +381,9 @@ async def list_projects( # pylint: disable=too-many-arguments
360381
361382 async with self .engine .acquire () as conn :
362383
363- access_rights_subquery = (
364- sa .select (
365- project_to_groups .c .project_uuid ,
366- sa .func .jsonb_object_agg (
367- project_to_groups .c .gid ,
368- sa .func .jsonb_build_object (
369- "read" ,
370- project_to_groups .c .read ,
371- "write" ,
372- project_to_groups .c .write ,
373- "delete" ,
374- project_to_groups .c .delete ,
375- ),
376- )
377- .filter (
378- project_to_groups .c .read # Filters out entries where "read" is False
379- )
380- .label ("access_rights" ),
381- ).group_by (project_to_groups .c .project_uuid )
382- ).subquery ("access_rights_subquery" )
383-
384384 _join_query = (
385385 projects .join (projects_to_products , isouter = True )
386- .join (access_rights_subquery , isouter = True )
386+ .join (self . access_rights_subquery , isouter = True )
387387 .join (
388388 projects_to_folders ,
389389 (
@@ -404,7 +404,7 @@ async def list_projects( # pylint: disable=too-many-arguments
404404 for col in projects .columns
405405 if col .name not in ["access_rights" ]
406406 ],
407- access_rights_subquery .c .access_rights ,
407+ self . access_rights_subquery .c .access_rights ,
408408 projects_to_products .c .product_name ,
409409 projects_to_folders .c .folder_id ,
410410 )
@@ -501,25 +501,6 @@ async def list_projects_full_search(
501501 async with self .engine .acquire () as conn :
502502 user_groups : list [RowProxy ] = await self ._list_user_groups (conn , user_id )
503503
504- access_rights_subquery = (
505- sa .select (
506- project_to_groups .c .project_uuid ,
507- sa .func .jsonb_object_agg (
508- project_to_groups .c .gid ,
509- sa .func .jsonb_build_object (
510- "read" ,
511- project_to_groups .c .read ,
512- "write" ,
513- project_to_groups .c .write ,
514- "delete" ,
515- project_to_groups .c .delete ,
516- ),
517- )
518- .filter (project_to_groups .c .read )
519- .label ("access_rights" ),
520- ).group_by (project_to_groups .c .project_uuid )
521- ).subquery ("access_rights_subquery" )
522-
523504 workspace_access_rights_subquery = (
524505 sa .select (
525506 workspaces_access_rights .c .workspace_id ,
@@ -546,12 +527,12 @@ async def list_projects_full_search(
546527 for col in projects .columns
547528 if col .name not in ["access_rights" ]
548529 ],
549- access_rights_subquery .c .access_rights ,
530+ self . access_rights_subquery .c .access_rights ,
550531 projects_to_products .c .product_name ,
551532 projects_to_folders .c .folder_id ,
552533 )
553534 .select_from (
554- projects .join (access_rights_subquery , isouter = True )
535+ projects .join (self . access_rights_subquery , isouter = True )
555536 .join (projects_to_products )
556537 .join (
557538 projects_to_folders ,
0 commit comments