Skip to content

Commit 6842da9

Browse files
authored
Add Caption to PartDetails (#87)
* Add caption to PartDetails * Update to version 0.8.1
1 parent 57b976d commit 6842da9

File tree

3 files changed

+50
-11
lines changed

3 files changed

+50
-11
lines changed

bdrxml/mods.py

+7
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ class CommonField(Common):
2222
text = SF('text()')
2323

2424

25+
class PartDetail(PartDetail):
26+
caption = SF('mods:caption')
27+
28+
class Part(Part):
29+
details = NodeListField('mods:detail', PartDetail)
30+
2531
class PlaceTerm(CommonField):
2632
ROOT_NAME = 'placeTerm'
2733
type = SF('@type')
@@ -164,6 +170,7 @@ class BaseMods(BaseMods):
164170
target_audiences = NodeListField('mods:targetAudience', TargetAudience)
165171
record_info_list = NodeListField('mods:recordInfo', RecordInfo)
166172
names = xmlmap.NodeListField('mods:name', Name)
173+
parts = xmlmap.NodeListField('mods:part', Part)
167174

168175

169176
class RelatedItem(BaseMods):

setup.py

+11-11
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
from setuptools import setup, find_packages
2-
3-
setup(name='bdrxml',
4-
version='1.0a1',
5-
packages=find_packages(),
6-
package_data={'bdrxml': ['test/data/*.*',
7-
'templates/*.*']},
8-
install_requires=[
9-
'eulxml>=1.0.1',
10-
]
11-
)
1+
from setuptools import setup, find_packages
2+
3+
setup(name='bdrxml',
4+
version='0.8.1',
5+
packages=find_packages(),
6+
package_data={'bdrxml': ['test/data/*.*',
7+
'templates/*.*']},
8+
install_requires=[
9+
'eulxml>=1.0.1',
10+
]
11+
)

test/mods_test.py

+32
Original file line numberDiff line numberDiff line change
@@ -168,10 +168,23 @@
168168
</mods:titleInfo>
169169
</mods:mods>
170170
'''
171+
MODS_TEMPLATE = u'''
172+
<mods:mods ID="id101"
173+
xmlns:mods="http://www.loc.gov/mods/v3"
174+
xmlns:xlink="http://www.w3.org/1999/xlink"
175+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
176+
xsi:schemaLocation="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-4.xsd">
177+
{inserted_mods}
178+
</mods:mods>
179+
'''
171180

172181

173182
class ModsReadWrite(unittest.TestCase):
174183

184+
def mods_from_partial(self, mods_partial):
185+
sample_mods = MODS_TEMPLATE.format(inserted_mods=mods_partial)
186+
return load_xmlobject_from_string(sample_mods, mods.Mods)
187+
175188
def setUp(self):
176189
#basic mods
177190
self.mods = mods.make_mods()
@@ -304,6 +317,25 @@ def test_geographic_subjects(self):
304317
self.assertEqual(subject.hierarchical_geographic.city, 'New Orleans')
305318
self.assertEqual(subject.hierarchical_geographic.city_section, 'Lower Ninth Ward')
306319

320+
def test_parts(self):
321+
sample_mods = u'''
322+
<mods:part>
323+
<mods:detail type="issue">
324+
<mods:number>11</mods:number>
325+
<mods:caption>no.</mods:caption>
326+
</mods:detail>
327+
<mods:extent unit="pages">
328+
<mods:start>735</mods:start>
329+
<mods:end>743</mods:end>
330+
<mods:total>8</mods:total>
331+
</mods:extent>
332+
</mods:part>
333+
'''
334+
loaded = self.mods_from_partial(sample_mods)
335+
part = loaded.parts[0]
336+
self.assertEqual(part.details[0].number, '11')
337+
self.assertEqual(part.details[0].caption, 'no.')
338+
307339
def test_validate_mods_35(self):
308340
loaded = load_xmlobject_from_string(MODS_35_XML, mods.Mods)
309341
self.assertTrue(loaded.is_valid())

0 commit comments

Comments
 (0)