From fe56ee8d5250a532503c4c8efce0b8b37863194e Mon Sep 17 00:00:00 2001 From: kahokago Date: Fri, 19 Jun 2026 09:32:55 +0000 Subject: [PATCH] Fixed bug in creating ro-crate without additional metadata files. --- addons/weko/schema/ro_crate.py | 15 +++++++-------- addons/weko/tests/test_schema.py | 4 ++++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/addons/weko/schema/ro_crate.py b/addons/weko/schema/ro_crate.py index 079c52726e8..02e23cdd2d7 100644 --- a/addons/weko/schema/ro_crate.py +++ b/addons/weko/schema/ro_crate.py @@ -538,14 +538,13 @@ def _build_hierarchical_object(user, target_index, file_metadata, download_file_ if 'choose-additional-metadata' in value: url = value['choose-additional-metadata'] value_data = json.loads(url.get('value') or '[]') - if not value_data: - continue - file_path = value_data[0]['path'] - file_name = file_path.split('/')[-1] - for item in value_data: - item['path'] = item['path'].replace('osfstorage/', '') - url['value'] = file_name - value['choose-additional-metadata'] = url + if value_data: + file_path = value_data[0]['path'] + file_name = file_path.split('/')[-1] + for item in value_data: + item['path'] = item['path'].replace('osfstorage/', '') + url['value'] = file_name + value['choose-additional-metadata'] = url if 'absolute_url' in value: url = value['absolute_url'] parsed_url = urlparse(url) diff --git a/addons/weko/tests/test_schema.py b/addons/weko/tests/test_schema.py index 3f8ae9c72cb..04e127bf9ed 100644 --- a/addons/weko/tests/test_schema.py +++ b/addons/weko/tests/test_schema.py @@ -2381,6 +2381,9 @@ def test_write_ro_crate_json_mebyo_empty_files(self): 'grdm-files': { 'value': [], # No files }, + 'choose-additional-metadata': { # No additional metadata files + 'value': '', + }, } schema.write_ro_crate_json( @@ -2410,6 +2413,7 @@ def test_write_ro_crate_json_mebyo_empty_files(self): # Project metadata should be reflected assert_equal(root['name'], 'Test Dataset') assert_equal(root['description'], 'Description of experiment purpose') + assert_in('ams:purposeOfExperiment', root) def test_write_ro_crate_json_mebyo_with_additional_metadata_files(self): """Test MEBYO schema with choose-additional-metadata containing files.