From c1e0e7510403feb674af1a9b408b8f1e2ab82791 Mon Sep 17 00:00:00 2001 From: jazairi <16103405+jazairi@users.noreply.github.com> Date: Wed, 5 Aug 2026 10:21:22 -0700 Subject: [PATCH] Update department name field in DSpace metadata Why these changes are being introduced: The DSpace@MIT data model is replacing the `dc.contributor.department` field with `dc.relation.orgunit`. Relevant ticket(s): - [ETD-699](https://mitlibraries.atlassian.net/browse/ETD-699) How this addresses that need: This makes the requested change. Side effects of this change: None. --- app/models/archivematica_metadata.rb | 6 +++--- app/models/dspace_metadata.rb | 2 +- test/fixtures/files/thesis_1234_archivematica.csv | 2 +- test/fixtures/submission_information_packages.yml | 2 +- test/models/archivematica_metadata_test.rb | 4 ++-- test/models/dspace_metadata_test.rb | 8 ++++---- 6 files changed, 12 insertions(+), 12 deletions(-) diff --git a/app/models/archivematica_metadata.rb b/app/models/archivematica_metadata.rb index 2559250b..d090f195 100644 --- a/app/models/archivematica_metadata.rb +++ b/app/models/archivematica_metadata.rb @@ -68,7 +68,7 @@ def repeating dc_identifier_orcid dc_contributor_advisor degree_fields - dc_contributor_department + dc_relation_orgunit rights_fields end @@ -124,9 +124,9 @@ def rights_author(file, file_number) @csv_hash["f#{file_number}".to_sym] << copyright_check(file) end - def dc_contributor_department + def dc_relation_orgunit @thesis.departments.each do |dept| - @csv_hash[:headers] << 'dc.contributor.department' + @csv_hash[:headers] << 'dc.relation.orgunit' @thesis.files.each_with_index do |file, i| @csv_hash["f#{i}".to_sym] << thesis_pdf_checker(file, dept.name_dspace) end diff --git a/app/models/dspace_metadata.rb b/app/models/dspace_metadata.rb index 624c8a1f..a546b66d 100644 --- a/app/models/dspace_metadata.rb +++ b/app/models/dspace_metadata.rb @@ -54,7 +54,7 @@ def parse_orcids(thesis_users) def departments(thesis_depts) thesis_depts.each do |d| - add_metadata('dc.contributor.department', d.name_dspace) + add_metadata('dc.relation.orgunit', d.name_dspace) end end diff --git a/test/fixtures/files/thesis_1234_archivematica.csv b/test/fixtures/files/thesis_1234_archivematica.csv index ea1f25ee..7f791d1b 100644 --- a/test/fixtures/files/thesis_1234_archivematica.csv +++ b/test/fixtures/files/thesis_1234_archivematica.csv @@ -1,3 +1,3 @@ -filename,Level_of_DPCommitment,dc.title,dc.date.issued,dc.date.submitted,dc.type,dc.description.abstract,dc.identifier.uri,BitstreamDescription,BitstreamChecksumValue,BitstreamChecksumAlgorithm,dc.publisher,dcterms.isPartOf,dc.contributor.author,dc.identifier.orcid,dc.contributor.advisor,dc.description.degree,thesis.degree.name,mit.thesis.degree,dc.contributor.department,dc.rights,dc.rights,dc.rights.uri +filename,Level_of_DPCommitment,dc.title,dc.date.issued,dc.date.submitted,dc.type,dc.description.abstract,dc.identifier.uri,BitstreamDescription,BitstreamChecksumValue,BitstreamChecksumAlgorithm,dc.publisher,dcterms.isPartOf,dc.contributor.author,dc.identifier.orcid,dc.contributor.advisor,dc.description.degree,thesis.degree.name,mit.thesis.degree,dc.relation.orgunit,dc.rights,dc.rights,dc.rights.uri data/a_pdf.pdf,Level 3,MyString,2017-09,2021-12-25 12:20:00 UTC,Thesis,MyText,"",Thesis PDF,2800ec8c99c60f5b15520beac9939a46,MD5,Massachusetts Institute of Technology,AIC#Course_16_theses,"Yobot, Yo",0001,Addy McAdvisor,MFA,Master of Fine Arts,Bachelor,Massachusetts Institute of Technology. Department of Aeronautics and Astronautics,In Copyright - Educational Use Permitted,Copyright MIT,http://rightsstatements.org/page/InC-EDU/1.0/ data/b_pdf.pdf,"","","","","","","",Signature page,2800ec8c99c60f5b15520beac9939a46,MD5,"","","","","","","","","","","","" diff --git a/test/fixtures/submission_information_packages.yml b/test/fixtures/submission_information_packages.yml index 34cbb674..ee3eb576 100644 --- a/test/fixtures/submission_information_packages.yml +++ b/test/fixtures/submission_information_packages.yml @@ -32,7 +32,7 @@ sip_one: 196128f55c62f4c246bed52b07d3ae1c data/registrar.csv 3ac6f5cac4e09a6c95ee4004ebe19c51 data/metadata.csv metadata: >- - filename,Level_of_DPCommitment,dc.title,dc.date.issued,dc.date.submitted,dc.type,dc.description.abstract,dc.identifier.uri,BitstreamDescription,BitstreamChecksumValue,BitstreamChecksumAlgorithm,dc.publisher,dc.terms.isPartOf,dc.terms.isPartOf,dc.contributor.author,dc.contributor.author,dc.identifier.orcid,dc.identifier.orcid,dc.contributor.advisor,dc.contributor.advisor,dc.description.degree,thesis.degree.name,mit.thesis.degree,dc.description.degree,thesis.degree.name,mit.thesis.degree,dc.contributor.department,dc.contributor.department,dc.rights,dc.rights,dc.rights.uri + filename,Level_of_DPCommitment,dc.title,dc.date.issued,dc.date.submitted,dc.type,dc.description.abstract,dc.identifier.uri,BitstreamDescription,BitstreamChecksumValue,BitstreamChecksumAlgorithm,dc.publisher,dc.terms.isPartOf,dc.terms.isPartOf,dc.contributor.author,dc.contributor.author,dc.identifier.orcid,dc.identifier.orcid,dc.contributor.advisor,dc.contributor.advisor,dc.description.degree,thesis.degree.name,mit.thesis.degree,dc.description.degree,thesis.degree.name,mit.thesis.degree,dc.relation.orgunit,dc.relation.orgunit,dc.rights,dc.rights,dc.rights.uri data/registrar.csv,Level 3,On the importance of titles,2022-02,2021-08-13 18:22:45 UTC,Thesis,"Lorem ipsum dolor sit amet, consectetur adipiscing diff --git a/test/models/archivematica_metadata_test.rb b/test/models/archivematica_metadata_test.rb index 42a6ecf3..7250946e 100644 --- a/test/models/archivematica_metadata_test.rb +++ b/test/models/archivematica_metadata_test.rb @@ -32,7 +32,7 @@ def publishing_friendly_thesis(thesis) meta = ArchivematicaMetadata.new(t) csv = meta.instance_variable_get(:@csv_hash) assert_equal(csv[:headers], - ["filename", "Level_of_DPCommitment", "dc.title", "dc.date.issued", "dc.date.submitted", "dc.type", "dc.description.abstract", "dc.identifier.uri", "BitstreamDescription", "BitstreamChecksumValue", "BitstreamChecksumAlgorithm", "dc.publisher", "dcterms.isPartOf", "dc.contributor.author", "dc.identifier.orcid", "dc.contributor.advisor", "dc.description.degree", "thesis.degree.name", "mit.thesis.degree", "dc.contributor.department", "dc.rights", "dc.rights", "dc.rights.uri"] + ["filename", "Level_of_DPCommitment", "dc.title", "dc.date.issued", "dc.date.submitted", "dc.type", "dc.description.abstract", "dc.identifier.uri", "BitstreamDescription", "BitstreamChecksumValue", "BitstreamChecksumAlgorithm", "dc.publisher", "dcterms.isPartOf", "dc.contributor.author", "dc.identifier.orcid", "dc.contributor.advisor", "dc.description.degree", "thesis.degree.name", "mit.thesis.degree", "dc.relation.orgunit", "dc.rights", "dc.rights", "dc.rights.uri"] ) end @@ -145,7 +145,7 @@ def publishing_friendly_thesis(thesis) t = theses(:one) publishing_friendly_thesis(t) - assert_equal("b4f000886b890d2628f3d7500cecdfd9", ArchivematicaMetadata.new(t).md5) + assert_equal("d2fbe3f4a3bbbac0dcd393cbf1bb38a3", ArchivematicaMetadata.new(t).md5) end end diff --git a/test/models/dspace_metadata_test.rb b/test/models/dspace_metadata_test.rb index 6546c4cd..7ef400a4 100644 --- a/test/models/dspace_metadata_test.rb +++ b/test/models/dspace_metadata_test.rb @@ -243,10 +243,10 @@ def dss_friendly_thesis(thesis) unserialized = JSON.parse(serialized) assert unserialized['metadata'].include?( - { 'key' => 'dc.contributor.department', + { 'key' => 'dc.relation.orgunit', 'value' => 'Massachusetts Institute of Technology. Department of Aeronautics and Astronautics' } ) - refute unserialized['metadata'].include?({ 'key' => 'dc.contributor.department', + refute unserialized['metadata'].include?({ 'key' => 'dc.relation.orgunit', 'value' => 'MIT Anthropology Program' }) # Multiple departments @@ -256,10 +256,10 @@ def dss_friendly_thesis(thesis) unserialized = JSON.parse(serialized) assert unserialized['metadata'].include?( - { 'key' => 'dc.contributor.department', + { 'key' => 'dc.relation.orgunit', 'value' => 'Massachusetts Institute of Technology. Department of Aeronautics and Astronautics' } ) - assert unserialized['metadata'].include?({ 'key' => 'dc.contributor.department', + assert unserialized['metadata'].include?({ 'key' => 'dc.relation.orgunit', 'value' => 'MIT Anthropology Program' }) end