55from aiohttp import web
66from models_library .access_rights import AccessRights
77from models_library .api_schemas_webserver .folders_v2 import FolderGet , FolderGetPage
8- from models_library .folders import FolderID
8+ from models_library .folders import FolderID , FolderQuery , FolderScope
99from models_library .products import ProductName
1010from models_library .projects import ProjectID
1111from models_library .rest_ordering import OrderBy
1212from models_library .users import UserID
13- from models_library .workspaces import WorkspaceID
13+ from models_library .workspaces import WorkspaceID , WorkspaceQuery , WorkspaceScope
1414from pydantic import NonNegativeInt
1515from servicelib .aiohttp .application_keys import APP_FIRE_AND_FORGET_TASKS_KEY
1616from servicelib .common_headers import UNDEFINED_DEFAULT_SIMCORE_USER_AGENT_VALUE
@@ -166,6 +166,11 @@ async def list_folders(
166166 )
167167 workspace_is_private = False
168168 user_folder_access_rights = user_workspace_access_rights .my_access_rights
169+ _workspace_query = WorkspaceQuery (
170+ workspace_scope = WorkspaceScope .SHARED , workspace_id = workspace_id
171+ )
172+ else :
173+ _workspace_query = WorkspaceQuery (workspace_scope = WorkspaceScope .PRIVATE )
169174
170175 if folder_id :
171176 # Check user access to folder
@@ -176,14 +181,19 @@ async def list_folders(
176181 user_id = user_id if workspace_is_private else None ,
177182 workspace_id = workspace_id ,
178183 )
184+ _folder_query = FolderQuery (
185+ folder_scope = FolderScope .SPECIFIC , folder_id = folder_id
186+ )
187+ else :
188+ _folder_query = FolderQuery (folder_scope = FolderScope .ROOT )
179189
180190 total_count , folders = await folders_db .list_ (
181191 app ,
182- content_of_folder_id = folder_id ,
183- user_id = user_id if workspace_is_private else None ,
184- workspace_id = workspace_id ,
185192 product_name = product_name ,
186- trashed = trashed ,
193+ user_id = user_id ,
194+ folder_query = _folder_query ,
195+ workspace_query = _workspace_query ,
196+ filter_trashed = trashed ,
187197 offset = offset ,
188198 limit = limit ,
189199 order_by = order_by ,
0 commit comments