@@ -349,27 +349,6 @@ async def upsert_project_linked_product(
349349 .on_conflict_do_nothing ()
350350 )
351351
352- _access_rights_subquery = (
353- sa .select (
354- project_to_groups .c .project_uuid ,
355- sa .func .jsonb_object_agg (
356- project_to_groups .c .gid ,
357- sa .func .jsonb_build_object (
358- "read" ,
359- project_to_groups .c .read ,
360- "write" ,
361- project_to_groups .c .write ,
362- "delete" ,
363- project_to_groups .c .delete ,
364- ),
365- )
366- .filter (
367- project_to_groups .c .read # Filters out entries where "read" is False
368- )
369- .label ("access_rights" ),
370- ).group_by (project_to_groups .c .project_uuid )
371- ).subquery ("access_rights_subquery" )
372-
373352 def _create_private_workspace_query (
374353 self ,
375354 * ,
@@ -387,11 +366,32 @@ def _create_private_workspace_query(
387366 WorkspaceScope .ALL ,
388367 )
389368
369+ access_rights_subquery = (
370+ sa .select (
371+ project_to_groups .c .project_uuid ,
372+ sa .func .jsonb_object_agg (
373+ project_to_groups .c .gid ,
374+ sa .func .jsonb_build_object (
375+ "read" ,
376+ project_to_groups .c .read ,
377+ "write" ,
378+ project_to_groups .c .write ,
379+ "delete" ,
380+ project_to_groups .c .delete ,
381+ ),
382+ )
383+ .filter (
384+ project_to_groups .c .read # Filters out entries where "read" is False
385+ )
386+ .label ("access_rights" ),
387+ ).group_by (project_to_groups .c .project_uuid )
388+ ).subquery ("access_rights_subquery" )
389+
390390 private_workspace_query = (
391391 sa .select (
392392 * PROJECT_DB_COLS ,
393393 projects .c .workbench ,
394- self . _access_rights_subquery .c .access_rights ,
394+ access_rights_subquery .c .access_rights ,
395395 projects_to_products .c .product_name ,
396396 projects_to_folders .c .folder_id ,
397397 sa .func .coalesce (
@@ -400,7 +400,7 @@ def _create_private_workspace_query(
400400 ).label ("tags" ),
401401 )
402402 .select_from (
403- projects .join (self . _access_rights_subquery , isouter = True )
403+ projects .join (access_rights_subquery , isouter = True )
404404 .join (projects_to_products )
405405 .join (
406406 projects_to_folders ,
@@ -423,6 +423,10 @@ def _create_private_workspace_query(
423423 & (projects_to_products .c .product_name == product_name )
424424 )
425425 )
426+ assert ( # nosec
427+ access_rights_subquery .description == "access_rights_subquery"
428+ )
429+
426430 if is_search_by_multi_columns :
427431 private_workspace_query = private_workspace_query .join (
428432 users , users .c .id == projects .c .prj_owner , isouter = True
@@ -441,10 +445,11 @@ def _create_shared_workspace_query(
441445 ) -> sql .Select | None :
442446
443447 if workspace_query .workspace_scope is not WorkspaceScope .PRIVATE :
444- assert workspace_query .workspace_scope in (
448+ assert workspace_query .workspace_scope in ( # nosec
445449 WorkspaceScope .SHARED ,
446450 WorkspaceScope .ALL ,
447451 )
452+
448453 workspace_access_rights_subquery = (
449454 sa .select (
450455 workspaces_access_rights .c .workspace_id ,
@@ -502,6 +507,11 @@ def _create_shared_workspace_query(
502507 & (projects_to_products .c .product_name == product_name )
503508 )
504509 )
510+ assert ( # nosec
511+ workspace_access_rights_subquery .description
512+ == "workspace_access_rights_subquery"
513+ )
514+
505515 if workspace_query .workspace_scope == WorkspaceScope .ALL :
506516 shared_workspace_query = shared_workspace_query .where (
507517 projects .c .workspace_id .is_not (None ) # <-- All shared workspaces
0 commit comments