mirror of
https://github.com/qurator-spk/modstool.git
synced 2025-06-09 11:49:55 +02:00
🐛 modstool: Fix handling multiple <mods:language>
There may be multiple <mods:language> tags with mods:languageTerm children, that should be merged into one language_languageTerm column
This commit is contained in:
parent
5c48541dee
commit
75ff143a25
2 changed files with 17 additions and 6 deletions
|
@ -320,8 +320,8 @@ def mods_to_dict(mods, raise_errors=True):
|
|||
value['language_{}'.format(sub_tag)] = s
|
||||
elif tag == '{http://www.loc.gov/mods/v3}languageTerm':
|
||||
value['languageTerm'] = TagGroup(tag, group) \
|
||||
.is_singleton().has_attributes({'authority': 'iso639-2b', 'type': 'code'}) \
|
||||
.text()
|
||||
.has_attributes({'authority': 'iso639-2b', 'type': 'code'}) \
|
||||
.text_set()
|
||||
elif tag == '{http://www.loc.gov/mods/v3}scriptTerm':
|
||||
value['scriptTerm'] = TagGroup(tag, group) \
|
||||
.fix_script_term() \
|
||||
|
|
|
@ -6,12 +6,23 @@ from .. import mods_to_dict, flatten
|
|||
|
||||
|
||||
def dict_fromstring(x):
|
||||
"""Helper function to parse a MODS XML string to a flattened dict"""
|
||||
return flatten(mods_to_dict(ET.fromstring(x)))
|
||||
"""Helper function to parse a MODS XML string to a flattened dict"""
|
||||
return flatten(mods_to_dict(ET.fromstring(x)))
|
||||
|
||||
def test_languageTerm():
|
||||
def test_single_language_languageTerm():
|
||||
d = dict_fromstring("""
|
||||
<mods:mods xmlns:mods="http://www.loc.gov/mods/v3">
|
||||
<mods:language>
|
||||
<mods:languageTerm authority="iso639-2b" type="code">lat</mods:languageTerm>
|
||||
<mods:languageTerm authority="iso639-2b" type="code">ger</mods:languageTerm>
|
||||
</mods:language>
|
||||
</mods:mods>
|
||||
""")
|
||||
assert d['language_languageTerm'] == {'ger', 'lat'}
|
||||
|
||||
def test_multitple_language_languageTerm():
|
||||
"""
|
||||
Different languages have multiple mods:language elements.
|
||||
Different languages MAY have multiple mods:language elements.
|
||||
See MODS-AP 2.3.1
|
||||
"""
|
||||
d = dict_fromstring("""
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue