Skip to content

Commit 10f2026

Browse files
committed
new route should return all folders in a dataset
1 parent 2fb33c4 commit 10f2026

File tree

2 files changed

+45
-11
lines changed

2 files changed

+45
-11
lines changed

backend/app/routers/datasets.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -837,6 +837,40 @@ async def get_dataset_folders_and_files(
837837
return page.dict()
838838
raise HTTPException(status_code=404, detail=f"Dataset {dataset_id} not found")
839839

840+
@router.get("/{dataset_id}/folders", response_model=Paged)
841+
async def get_dataset_folders(
842+
dataset_id: str,
843+
authenticated: bool = Depends(CheckStatus("AUTHENTICATED")),
844+
public: bool = Depends(CheckStatus("PUBLIC")),
845+
user_id=Depends(get_user),
846+
skip: int = 0,
847+
limit: int = 10,
848+
admin=Depends(get_admin),
849+
enable_admin: bool = False,
850+
admin_mode: bool = Depends(get_admin_mode),
851+
allow: bool = Depends(Authorization("viewer")),
852+
):
853+
if (
854+
await DatasetDBViewList.find_one(
855+
Or(
856+
DatasetDBViewList.id == PydanticObjectId(dataset_id),
857+
)
858+
)
859+
) is not None:
860+
if authenticated or public or (admin and admin_mode):
861+
query = [
862+
FolderFileViewList.dataset_id == PydanticObjectId(dataset_id),
863+
]
864+
else:
865+
query = [
866+
FolderFileViewList.dataset_id == PydanticObjectId(dataset_id),
867+
]
868+
869+
folders = (await FolderFileViewList.find(*query).to_list())
870+
871+
return folders.dict()
872+
raise HTTPException(status_code=404, detail=f"Dataset {dataset_id} not found")
873+
840874

841875
@router.delete("/{dataset_id}/folders/{folder_id}")
842876
async def delete_folder(

scripts/migration/migrate.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,6 @@ def process_collection_descendants(collection, headers_v1,headers_v2, v2_parent_
212212
process_collection_descendants(child, headers_v1, headers_v2, new_folder['id'], 'folder', v2_dataset_id)
213213

214214
for dataset in dataset_json:
215-
# TODO TODO DATASET PROCESSING
216215
if v2_parent_type == "dataset":
217216
print(f"Parent is a dataset")
218217
new_folder = create_folder_if_not_exists_or_get(dataset["name"], v2_parent_id, v2_dataset_id, headers_v2)
@@ -246,12 +245,12 @@ def process_dataset_files(dataset, headers_v1, headers_v2, parent_type, parent_i
246245

247246
for folder_v1 in dataset_v1_folders:
248247
current_folder_hierarchy = folder_v1['name']
249-
new_parent = add_folder_hierarchy_to_migration_folder(folder_hierarchy=current_folder_hierarchy,
248+
# TODO CHECK HERE
249+
add_folder_hierarchy_to_migration_folder(folder_hierarchy=current_folder_hierarchy,
250250
dataset_v2=dataset_v2_id,
251251
folder_id_v2=parent_id,
252252
headers=headers_v2
253253
)
254-
parent_id = new_parent
255254
print(f"This is the folder")
256255

257256
files_endpoint = f"{CLOWDER_V1}/api/datasets/{dataset['id']}/files"
@@ -575,9 +574,8 @@ def add_folder_hierarchy(folder_hierarchy, dataset_v2, headers):
575574

576575
def create_folder_if_not_exists_or_get(folder, parent, dataset_v2, headers):
577576
"""Create a folder if it does not exist or return the existing folder."""
578-
# TODO if this is a dataset, we should create the subfolders
579-
# TODO or write another method for processing datasets
580577
current_folders = get_folder_and_subfolders(dataset_v2, headers)
578+
current_all_folders = get_all_folder_and_subfolders(dataset_v2, headers)
581579
folder_data = (
582580
{"name": folder, "parent_folder": parent} if parent else {"name": folder}
583581
)
@@ -593,6 +591,13 @@ def create_folder_if_not_exists_or_get(folder, parent, dataset_v2, headers):
593591
)
594592
return response.json()
595593

594+
def get_all_folder_and_subfolders(dataset_id, headers):
595+
"""Retrieve all folders and subfolders in a dataset."""
596+
endpoint = f"{CLOWDER_V2}/api/v2/datasets/{dataset_id}/folders"
597+
response = requests.get(endpoint, headers=headers)
598+
folder_response = response.json()
599+
return folder_response
600+
596601

597602
def get_folder_and_subfolders(dataset_id, headers):
598603
"""Retrieve all folders and subfolders in a dataset."""
@@ -868,7 +873,6 @@ def build_collection_metadata_for_v1_dataset(dataset_id, user_v1, headers):
868873
return dataset_collections
869874

870875

871-
# TODO test this method
872876
def build_collection_space_metadata_for_v1_dataset(dataset, user_v1, headers):
873877
dataset_id = dataset["id"]
874878
dataset_collections = []
@@ -939,10 +943,8 @@ def process_user_and_resources_collections(user_v1, USER_MAP, DATASET_MAP, COLLE
939943

940944
for dataset in user_v1_datasets:
941945
print(f"Creating dataset in v2: {dataset['id']} - {dataset['name']}")
942-
# TODO: check if dataset is in toml_exclude_dataset_id
943946
dataset_v1_id = dataset["id"]
944947
dataset_v1_spaces = dataset["spaces"]
945-
# TODO check if dataset is in toml_space_ids or exclude_space_ids
946948
MIGRATE_DATASET = True
947949
print(toml_exclude_dataset_ids)
948950
print(toml_space_ids)
@@ -1042,10 +1044,8 @@ def process_user_and_resources(user_v1, USER_MAP, DATASET_MAP):
10421044

10431045
for dataset in user_v1_datasets:
10441046
print(f"Creating dataset in v2: {dataset['id']} - {dataset['name']}")
1045-
# TODO: check if dataset is in toml_exclude_dataset_id
10461047
dataset_v1_id = dataset["id"]
10471048
dataset_v1_spaces = dataset["spaces"]
1048-
# TODO check if dataset is in toml_space_ids or exclude_space_ids
10491049
MIGRATE_DATASET = True
10501050
print(toml_exclude_dataset_ids)
10511051
print(toml_space_ids)
@@ -1150,7 +1150,7 @@ def process_user_and_resources(user_v1, USER_MAP, DATASET_MAP):
11501150
DATASET_MAP = {}
11511151
COLLECTIONS_MAP = {}
11521152
users_v1 = get_clowder_v1_users()
1153-
# TODO filter if toml users
1153+
11541154
if toml_users is not None and len(toml_users) > 0:
11551155
print(f"Using spaces from config.toml: {toml_users}")
11561156
users_v1 = [

0 commit comments

Comments
 (0)