1
0
Fork 0
mirror of https://github.com/qurator-spk/modstool.git synced 2025-06-26 12:09:55 +02:00

🐛 Fix mods:relatedItem with mods:recordIdentifier source=dnb-ppn

mods:relatedItem may have a mods:recordIdentifier with source="dnb-ppn".
This may happen for digitized works that have their original work in
another library and use a DNB PPN there.

Fixes gh-22.
This commit is contained in:
Gerber, Mike 2023-04-17 19:21:43 +02:00
parent 4e7b8ed642
commit 100b2a5e6c
2 changed files with 20 additions and 1 deletions

View file

@ -95,7 +95,13 @@ def mods_to_dict(mods, raise_errors=True):
elif tag == '{http://www.loc.gov/mods/v3}recordInfo':
value['recordInfo'] = TagGroup(tag, group).is_singleton().has_no_attributes().descend(raise_errors)
elif tag == '{http://www.loc.gov/mods/v3}recordIdentifier':
value['recordIdentifier'] = TagGroup(tag, group).is_singleton().has_attributes({'source': 'gbv-ppn'}).text()
# By default we assume source="gbv-ppn" mods:recordIdentifiers (= PPNs),
# however, in mods:relatedItems, there may be source="dnb-ppns",
# which we need to distinguish by using a separate field name.
try:
value['recordIdentifier'] = TagGroup(tag, group).is_singleton().has_attributes({'source': 'gbv-ppn'}).text()
except ValueError:
value['recordIdentifier-dnb-ppn'] = TagGroup(tag, group).is_singleton().has_attributes({'source': 'dnb-ppn'}).text()
elif tag == '{http://www.loc.gov/mods/v3}identifier':
for e in group:
if len(e.attrib) != 1: