From 2ff1ce1ab1cb9f6b5c777f20656d8078a2586eba Mon Sep 17 00:00:00 2001 From: toddn Date: Thu, 29 Aug 2024 16:37:56 -0500 Subject: [PATCH] need to post it as metadata --- scripts/migration/migrate.py | 2 ++ .../migration/migrate_metadata_definitions.py | 25 ++++++++++++++++--- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/scripts/migration/migrate.py b/scripts/migration/migrate.py index 29b7d7fb2..87890d69b 100644 --- a/scripts/migration/migrate.py +++ b/scripts/migration/migrate.py @@ -636,6 +636,8 @@ def process_user_and_resources(user_v1, USER_MAP, DATASET_MAP): ) if file_v2_id is not None: add_file_metadata(file, file_v2_id, clowder_headers_v1, user_headers_v2) + # posting the collection hierarchy as metadata + collection_metadata = build_collection_metadata_for_v1_dataset(dataset_id=dataset['id'],user_v1=user_v1, headers=clowder_headers_v1) return [USER_MAP, DATASET_MAP] diff --git a/scripts/migration/migrate_metadata_definitions.py b/scripts/migration/migrate_metadata_definitions.py index 4daf8a26c..0b096f940 100644 --- a/scripts/migration/migrate_metadata_definitions.py +++ b/scripts/migration/migrate_metadata_definitions.py @@ -84,8 +84,8 @@ def fetch_definitions(definitions_url, headers=base_headers_v1): def transform_metadata_v1_to_v2(v1_metadata): # Extracting data from v1 format - label = v1_metadata.get("json", {}).get("label", "") uri = v1_metadata.get("json", {}).get("uri", "") + label = uri.split("/")[-1] type_ = v1_metadata.get("json", {}).get("type", "string") definitions_url = v1_metadata.get("json", {}).get("definitions_url", "") @@ -104,10 +104,10 @@ def transform_metadata_v1_to_v2(v1_metadata): "description", f"Metadata for {label}" ), "required_for_items": {"datasets": False, "files": False}, - "context": [{label.lower(): uri}], + "context": [{label: uri}], "fields": [ { - "name": label.lower(), + "name": label, "list": is_list, "widgetType": widget_type, "config": field_config, @@ -144,7 +144,7 @@ def post_metadata_definition( def cleanup_metadata_definition( definition_id, clowder_v2_url=CLOWDER_V2_URL, headers=clowder_headers_v2 ): - delete_url = f"{clowder_v2_url}/metadata/definition/{definition_id}" + delete_url = f"{clowder_v2_url}/api/v2/metadata/definition/{definition_id}" response = requests.delete(delete_url, headers=headers) if response.status_code == 204: @@ -155,6 +155,23 @@ def cleanup_metadata_definition( ) +def check_metadata_definition_exists(clowder_v2_url, definition_name, headers): + # Construct the API endpoint URL + endpoint = f"{clowder_v2_url}/api/v2/metadata/definition/search/{definition_name}?skip=0&limit=100000" + + # Make the GET request to the API + response = requests.get(endpoint, headers=headers) + + if response.status_code == 200: + data = response.json() + # Check if the definition is present in the response + for item in data.get("data", []): + if item.get("name") == definition_name: + return True + + return False + + if __name__ == "__main__": v1_md_definitions = get_clowder_v1_metadata_definitions( CLOWDER_V1_URL, base_headers_v1