From 266300a69a182eb00a62b9ebcc943747344d4d02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Z=C3=BCbeyde=20Civelek?= Date: Wed, 1 Apr 2026 18:15:04 +0200 Subject: [PATCH] schema: add new curation fields for digitized videos --- .../records/videos/video/video-v1.0.0.json | 123 ++++++++++++++++++ .../records/videos/video/video-v1.0.0.json | 64 +++++++++ .../records/videos/video/video-v1.0.0.json | 123 ++++++++++++++++++ .../records/serializers/schemas/common.py | 37 +++++- 4 files changed, 346 insertions(+), 1 deletion(-) diff --git a/cds/modules/deposit/schemas/deposits/records/videos/video/video-v1.0.0.json b/cds/modules/deposit/schemas/deposits/records/videos/video/video-v1.0.0.json index a3f890896..d9eff03c3 100644 --- a/cds/modules/deposit/schemas/deposits/records/videos/video/video-v1.0.0.json +++ b/cds/modules/deposit/schemas/deposits/records/videos/video/video-v1.0.0.json @@ -690,6 +690,9 @@ }, "source": { "type": "string" + }, + "description": { + "type": "string" } } } @@ -724,6 +727,126 @@ "items": { "type": "string" } + }, + "020": { + "title": "Tag 020.", + "type": "array", + "items": { + "type": "string" + } + } + } + }, + "digitized_description": { + "title": "Digitized description.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_language": { + "title": "Digitized language.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_keywords": { + "title": "Digitized keywords.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_imprint_date": { + "title": "Digitized imprint date.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_notes": { + "title": "Digitized notes.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_subject_categories": { + "title": "Digitized subject categories.", + "type": "array", + "items": { + "type": "string" + } + }, + "cds_modification_field": { + "title": "CDS modification field.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_comments": { + "title": "Digitized comments.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_data_quality_note": { + "title": "Digitized data quality note.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_filmed_people": { + "title": "Digitized filmed people.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_access": { + "title": "Digitized access.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_physical_description": { + "title": "Digitized physical description.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_preservation": { + "title": "Digitized preservation metadata.", + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { "type": "string" }, + "format": { "type": "string" }, + "institution": { "type": "string" }, + "batch": { "type": "string" }, + "sequence_identifier": { "type": "string" }, + "action": { "type": "string" }, + "digitization_setup": { "type": "string" }, + "date": { "type": "string" }, + "preservation_notes": { + "type": "array", + "items": { "type": "string" } + }, + "workflow": { "type": "string" }, + "vendor": { "type": "string" }, + "title": { "type": "string" }, + "duration_value": { "type": "string" }, + "duration_unit": { "type": "string" }, + "related_record": { "type": "string" }, + "timing_note": { "type": "string" }, + "quality_control_note": { "type": "string" } } } } diff --git a/cds/modules/records/mappings/os-v2/records/videos/video/video-v1.0.0.json b/cds/modules/records/mappings/os-v2/records/videos/video/video-v1.0.0.json index 172b58744..66cad8954 100644 --- a/cds/modules/records/mappings/os-v2/records/videos/video/video-v1.0.0.json +++ b/cds/modules/records/mappings/os-v2/records/videos/video/video-v1.0.0.json @@ -397,6 +397,9 @@ }, "source": { "type": "text" + }, + "description": { + "type": "text" } } }, @@ -417,11 +420,72 @@ }, "088": { "type": "text" + }, + "020": { + "type": "text" } } }, "legacy_dates": { "type": "date" + }, + "digitized_description": { + "type": "text" + }, + "digitized_language": { + "type": "text" + }, + "digitized_keywords": { + "type": "text" + }, + "digitized_imprint_date": { + "type": "text" + }, + "digitized_notes": { + "type": "text" + }, + "digitized_subject_categories": { + "type": "text" + }, + "cds_modification_field": { + "type": "text" + }, + "digitized_comments": { + "type": "text" + }, + "digitized_data_quality_note": { + "type": "text" + }, + "digitized_filmed_people": { + "type": "text" + }, + "digitized_access": { + "type": "text" + }, + "digitized_physical_description": { + "type": "text" + }, + "digitized_preservation": { + "type": "object", + "properties": { + "source": { "type": "text" }, + "format": { "type": "text" }, + "institution": { "type": "text" }, + "batch": { "type": "text" }, + "sequence_identifier": { "type": "text" }, + "action": { "type": "text" }, + "digitization_setup": { "type": "text" }, + "date": { "type": "text" }, + "preservation_notes": { "type": "text" }, + "workflow": { "type": "text" }, + "vendor": { "type": "text" }, + "title": { "type": "text" }, + "duration_value": { "type": "text" }, + "duration_unit": { "type": "text" }, + "related_record": { "type": "text" }, + "timing_note": { "type": "text" }, + "quality_control_note": { "type": "text" } + } } } }, diff --git a/cds/modules/records/schemas/records/videos/video/video-v1.0.0.json b/cds/modules/records/schemas/records/videos/video/video-v1.0.0.json index 46fbb22ad..f433a614a 100644 --- a/cds/modules/records/schemas/records/videos/video/video-v1.0.0.json +++ b/cds/modules/records/schemas/records/videos/video/video-v1.0.0.json @@ -625,6 +625,9 @@ }, "source": { "type": "string" + }, + "description": { + "type": "string" } } } @@ -666,6 +669,13 @@ "items": { "type": "string" } + }, + "020": { + "title": "Tag 020.", + "type": "array", + "items": { + "type": "string" + } } } }, @@ -676,6 +686,119 @@ "type": "string", "format": "date-time" } + }, + "digitized_description": { + "title": "Digitized description.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_language": { + "title": "Digitized language.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_keywords": { + "title": "Digitized keywords.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_imprint_date": { + "title": "Digitized imprint date.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_notes": { + "title": "Digitized notes.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_subject_categories": { + "title": "Digitized subject categories.", + "type": "array", + "items": { + "type": "string" + } + }, + "cds_modification_field": { + "title": "CDS modification field.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_comments": { + "title": "Digitized comments.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_data_quality_note": { + "title": "Digitized data quality note.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_filmed_people": { + "title": "Digitized filmed people.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_access": { + "title": "Digitized access.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_physical_description": { + "title": "Digitized physical description.", + "type": "array", + "items": { + "type": "string" + } + }, + "digitized_preservation": { + "title": "Digitized preservation metadata.", + "type": "array", + "items": { + "type": "object", + "properties": { + "source": { "type": "string" }, + "format": { "type": "string" }, + "institution": { "type": "string" }, + "batch": { "type": "string" }, + "sequence_identifier": { "type": "string" }, + "action": { "type": "string" }, + "digitization_setup": { "type": "string" }, + "date": { "type": "string" }, + "preservation_notes": { + "type": "array", + "items": { "type": "string" } + }, + "workflow": { "type": "string" }, + "vendor": { "type": "string" }, + "title": { "type": "string" }, + "duration_value": { "type": "string" }, + "duration_unit": { "type": "string" }, + "related_record": { "type": "string" }, + "timing_note": { "type": "string" }, + "quality_control_note": { "type": "string" } + } + } } }, "title": "Fields that needs curation.", diff --git a/cds/modules/records/serializers/schemas/common.py b/cds/modules/records/serializers/schemas/common.py index fb8c54ae5..ef71f04a5 100644 --- a/cds/modules/records/serializers/schemas/common.py +++ b/cds/modules/records/serializers/schemas/common.py @@ -174,6 +174,7 @@ class LegacyMARCFieldsSchema(Schema): tag_583 = fields.List(fields.Str(), data_key="583") tag_306 = fields.List(fields.Str(), data_key="306") tag_088 = fields.List(fields.Str(), data_key="088") + tag_020 = fields.List(fields.Str(), data_key="020") class DigitizedMetadataSchema(Schema): @@ -184,6 +185,27 @@ class DigitizedMetadataSchema(Schema): nonpublic_note = fields.Str() md5_checksum = fields.Str() source = fields.Str() + description = fields.Str() + + +class DigitizedPreservationMetadataSchema(Schema): + source = fields.Str() + format = fields.Str() + institution = fields.Str() + batch = fields.Str() + sequence_identifier = fields.Str() + action = fields.Str() + digitization_setup = fields.Str() + date = fields.Str() + preservation_notes = fields.List(fields.Str()) + workflow = fields.Str() + vendor = fields.Str() + title = fields.Str() + duration_value = fields.Str() + duration_unit = fields.Str() + related_record = fields.Str() + timing_note = fields.Str() + quality_control_note = fields.Str() class CurationSchema(StrictKeysSchema): @@ -197,7 +219,20 @@ class CurationSchema(StrictKeysSchema): physical_medium = fields.List(fields.Str()) internal_note = fields.List(fields.Str()) legacy_marc_fields = fields.Nested(LegacyMARCFieldsSchema) - digitized = fields.Nested(DigitizedMetadataSchema) + digitized = fields.List(fields.Nested(DigitizedMetadataSchema)) + digitized_preservation = fields.List(fields.Nested(DigitizedPreservationMetadataSchema)) + digitized_description = fields.List(fields.Str()) + digitized_language = fields.List(fields.Str()) + digitized_keywords = fields.List(fields.Str()) + digitized_imprint_date = fields.List(fields.Str()) + digitized_notes = fields.List(fields.Str()) + digitized_subject_categories = fields.List(fields.Str()) + cds_modification_field = fields.List(fields.Str()) + digitized_comments = fields.List(fields.Str()) + digitized_data_quality_note = fields.List(fields.Str()) + digitized_filmed_people = fields.List(fields.Str()) + digitized_access = fields.List(fields.Str()) + digitized_physical_description = fields.List(fields.Str()) class AdditionalTitlesSchema(Schema):