mirror of
https://github.com/qurator-spk/modstool.git
synced 2025-06-08 11:20:07 +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
|
value['language_{}'.format(sub_tag)] = s
|
||||||
elif tag == '{http://www.loc.gov/mods/v3}languageTerm':
|
elif tag == '{http://www.loc.gov/mods/v3}languageTerm':
|
||||||
value['languageTerm'] = TagGroup(tag, group) \
|
value['languageTerm'] = TagGroup(tag, group) \
|
||||||
.is_singleton().has_attributes({'authority': 'iso639-2b', 'type': 'code'}) \
|
.has_attributes({'authority': 'iso639-2b', 'type': 'code'}) \
|
||||||
.text()
|
.text_set()
|
||||||
elif tag == '{http://www.loc.gov/mods/v3}scriptTerm':
|
elif tag == '{http://www.loc.gov/mods/v3}scriptTerm':
|
||||||
value['scriptTerm'] = TagGroup(tag, group) \
|
value['scriptTerm'] = TagGroup(tag, group) \
|
||||||
.fix_script_term() \
|
.fix_script_term() \
|
||||||
|
|
|
@ -6,12 +6,23 @@ from .. import mods_to_dict, flatten
|
||||||
|
|
||||||
|
|
||||||
def dict_fromstring(x):
|
def dict_fromstring(x):
|
||||||
"""Helper function to parse a MODS XML string to a flattened dict"""
|
"""Helper function to parse a MODS XML string to a flattened dict"""
|
||||||
return flatten(mods_to_dict(ET.fromstring(x)))
|
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
|
See MODS-AP 2.3.1
|
||||||
"""
|
"""
|
||||||
d = dict_fromstring("""
|
d = dict_fromstring("""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue