From 284e3d0faaebca13be40629431f85f8d22d5e8ae Mon Sep 17 00:00:00 2001 From: Makoto Nasuno Date: Wed, 4 Feb 2026 18:22:13 +0900 Subject: [PATCH 1/2] Do not treat choose-additional-metadata as required in RO-Crate generation --- ...s2-mibyodb-metadata-mappings-ro-crate.json | 1 + addons/weko/schema/ro_crate.py | 4 ++- osf/migrations/0261_ensure_schema_mappings.py | 27 +++++++++++++++++++ 3 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 osf/migrations/0261_ensure_schema_mappings.py diff --git a/addons/weko/mappings/ms2-mibyodb-metadata-mappings-ro-crate.json b/addons/weko/mappings/ms2-mibyodb-metadata-mappings-ro-crate.json index 1a405c63764..2ddc64a8ba5 100644 --- a/addons/weko/mappings/ms2-mibyodb-metadata-mappings-ro-crate.json +++ b/addons/weko/mappings/ms2-mibyodb-metadata-mappings-ro-crate.json @@ -411,6 +411,7 @@ "dateCreated": "{{ date_registered_in_metadata_value }}", "hasPart[]": [ { + "@createIf": "{{ choose_additional_metadata_value }}", ".@type": "File", ".@id": "files/{{choose_additional_metadata_value}}", "name": "{{choose_additional_metadata_value}}", diff --git a/addons/weko/schema/ro_crate.py b/addons/weko/schema/ro_crate.py index 1b4b2e1e529..0d443a3eb33 100644 --- a/addons/weko/schema/ro_crate.py +++ b/addons/weko/schema/ro_crate.py @@ -522,7 +522,9 @@ def write_ro_crate_json(user, f, target_index, download_file_names, schema_id, f value = source_data.get('value', '') if 'choose-additional-metadata' in value: url = value['choose-additional-metadata'] - value_data = json.loads(url['value']) + 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: diff --git a/osf/migrations/0261_ensure_schema_mappings.py b/osf/migrations/0261_ensure_schema_mappings.py new file mode 100644 index 00000000000..1b796dcb3fc --- /dev/null +++ b/osf/migrations/0261_ensure_schema_mappings.py @@ -0,0 +1,27 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.28 on 2024-11-07 22:16 +from __future__ import unicode_literals + +from django.db import migrations + + +def ensure_registration_mappings(*args): + from api.base import settings + from addons.weko.apps import NAME + from addons.weko.utils import ensure_registration_metadata_mapping + from addons.weko.mappings import REGISTRATION_METADATA_MAPPINGS + if NAME not in settings.INSTALLED_APPS: + return + for schema_name, mappings in REGISTRATION_METADATA_MAPPINGS: + ensure_registration_metadata_mapping(schema_name, mappings) + + +class Migration(migrations.Migration): + + dependencies = [ + ('osf', '0260_merge_20251126_1230'), + ] + + operations = [ + migrations.RunPython(ensure_registration_mappings, ensure_registration_mappings), + ] From 361a6c0c0fb2df1c6345fc0f435e1404781fda3d Mon Sep 17 00:00:00 2001 From: Makoto Nasuno Date: Tue, 10 Feb 2026 23:12:36 +0900 Subject: [PATCH 2/2] Fix unbound local variable when packaging additional metadata --- addons/weko/deposit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/weko/deposit.py b/addons/weko/deposit.py index 1ba9c97cfb1..1bd0c480d6e 100644 --- a/addons/weko/deposit.py +++ b/addons/weko/deposit.py @@ -177,7 +177,7 @@ def _deposit_metadata( if update_task_state: update_task_state(state='packaging', meta={ 'progress': 50, - 'paths': path, + 'paths': ad_metadata_paths, }) c = weko_addon.create_client()