Skip to content

Commit 441fa40

Browse files
authored
Merge pull request #67 from datacite/issue-66
Issue 66
2 parents 9aac9d8 + 6931b68 commit 441fa40

File tree

6 files changed

+271
-64
lines changed

6 files changed

+271
-64
lines changed

Pipfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ factory-boy = "*"
1111
termcolor = "*"
1212
python-dotenv = "*"
1313
pytest-env = "*"
14+
pytest-sugar = "*"
1415

1516
[packages]
1617
flask = "*"

Pipfile.lock

Lines changed: 8 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 177 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,177 @@
1+
{
2+
"data": {
3+
"id": "10.5438/prvv-nv23",
4+
"type": "dois",
5+
"attributes": {
6+
"doi": "10.5438/prvv-nv23",
7+
"prefix": "10.5438",
8+
"suffix": "prvv-nv23",
9+
"identifiers": [
10+
{
11+
"identifier": "https://doi.org/10.5438/prvv-nv23",
12+
"identifierType": "DOI"
13+
}
14+
],
15+
"creators": [
16+
{
17+
"name": "Fenner, Martin",
18+
"nameType": "Personal",
19+
"givenName": "Martin",
20+
"familyName": "Fenner",
21+
"affiliation": ["DataCite"],
22+
"nameIdentifiers": [
23+
{
24+
"schemeUri": "https://orcid.org",
25+
"nameIdentifier": "https://orcid.org/0000-0003-1419-2405",
26+
"nameIdentifierScheme": "ORCID"
27+
}
28+
]
29+
},
30+
{
31+
"name": "Hallett, Richard",
32+
"nameType": "Personal",
33+
"givenName": "Richard",
34+
"familyName": "Hallett",
35+
"affiliation": ["DataCite"],
36+
"nameIdentifiers": [
37+
{
38+
"schemeUri": "https://orcid.org",
39+
"nameIdentifier": "https://orcid.org/0000-0002-8599-0773",
40+
"nameIdentifierScheme": "ORCID"
41+
}
42+
]
43+
}
44+
],
45+
"titles": [
46+
{
47+
"title": "Welcome to the DataCite Team, Richard!"
48+
}
49+
],
50+
"publisher": "DataCite",
51+
"container": {},
52+
"publicationYear": 2018,
53+
"subjects": [
54+
{
55+
"subject": "datacite"
56+
}
57+
],
58+
"contributors": [],
59+
"dates": [
60+
{
61+
"date": null,
62+
"dateType": null
63+
},
64+
{
65+
"date": "2018-01-18",
66+
"dateType": "Updated"
67+
}
68+
],
69+
"language": null,
70+
"types": {
71+
"ris": "GEN",
72+
"bibtex": "article",
73+
"citeproc": "post-weblog",
74+
"schemaOrg": "BlogPosting",
75+
"resourceTypeGeneral": "Text"
76+
},
77+
"relatedIdentifiers": [
78+
{
79+
"relationType": "IsPartOf",
80+
"relatedIdentifier": "10.5438/0000-00ss",
81+
"resourceTypeGeneral": "Text",
82+
"relatedIdentifierType": "DOI"
83+
}
84+
],
85+
"sizes": [],
86+
"formats": null,
87+
"version": "1.0",
88+
"rightsList": [
89+
{
90+
"rights": null,
91+
"rightsUri": null
92+
}
93+
],
94+
"descriptions": [
95+
{
96+
"lang": null,
97+
"description": "DataCite is pleased to welcome Richard Hallett to our team. Richard joined DataCite as application developer in December. Get to know him better via this interview. Richard Hallett Can you tell us a little bit about what you did before you started...",
98+
"descriptionType": "Abstract"
99+
}
100+
],
101+
"geoLocations": [{}],
102+
"fundingReferences": null,
103+
"xml": "PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPHJlc291cmNlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCIgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vZGF0YWNpdGUub3JnL3NjaGVtYS9rZXJuZWwtNCBodHRwOi8vc2NoZW1hLmRhdGFjaXRlLm9yZy9tZXRhL2tlcm5lbC00L21ldGFkYXRhLnhzZCI+CiAgPGlkZW50aWZpZXIgaWRlbnRpZmllclR5cGU9IkRPSSI+MTAuNTQzOC9QUlZWLU5WMjM8L2lkZW50aWZpZXI+CiAgPGNyZWF0b3JzPgogICAgPGNyZWF0b3I+CiAgICAgIDxjcmVhdG9yTmFtZSBuYW1lVHlwZT0iUGVyc29uYWwiPkZlbm5lciwgTWFydGluPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5NYXJ0aW48L2dpdmVuTmFtZT4KICAgICAgPGZhbWlseU5hbWU+RmVubmVyPC9mYW1pbHlOYW1lPgogICAgICA8bmFtZUlkZW50aWZpZXIgbmFtZUlkZW50aWZpZXJTY2hlbWU9Ik9SQ0lEIiBzY2hlbWVVUkk9Imh0dHBzOi8vb3JjaWQub3JnIj5odHRwczovL29yY2lkLm9yZy8wMDAwLTAwMDMtMTQxOS0yNDA1PC9uYW1lSWRlbnRpZmllcj4KICAgICAgPGFmZmlsaWF0aW9uIGFmZmlsaWF0aW9uSWRlbnRpZmllcj0iaHR0cHM6Ly9yb3Iub3JnLzA0d3huc2o4MSIgYWZmaWxpYXRpb25JZGVudGlmaWVyU2NoZW1lPSJST1IiPkRhdGFDaXRlPC9hZmZpbGlhdGlvbj4KICAgIDwvY3JlYXRvcj4KICAgIDxjcmVhdG9yPgogICAgICA8Y3JlYXRvck5hbWUgbmFtZVR5cGU9IlBlcnNvbmFsIj5IYWxsZXR0LCBSaWNoYXJkPC9jcmVhdG9yTmFtZT4KICAgICAgPGdpdmVuTmFtZT5SaWNoYXJkPC9naXZlbk5hbWU+CiAgICAgIDxmYW1pbHlOYW1lPkhhbGxldHQ8L2ZhbWlseU5hbWU+CiAgICAgIDxuYW1lSWRlbnRpZmllciBuYW1lSWRlbnRpZmllclNjaGVtZT0iT1JDSUQiIHNjaGVtZVVSST0iaHR0cHM6Ly9vcmNpZC5vcmciPmh0dHBzOi8vb3JjaWQub3JnLzAwMDAtMDAwMi04NTk5LTA3NzM8L25hbWVJZGVudGlmaWVyPgogICAgICA8YWZmaWxpYXRpb24gYWZmaWxpYXRpb25JZGVudGlmaWVyPSJodHRwczovL3Jvci5vcmcvMDR3eG5zajgxIiBhZmZpbGlhdGlvbklkZW50aWZpZXJTY2hlbWU9IlJPUiI+RGF0YUNpdGU8L2FmZmlsaWF0aW9uPgogICAgPC9jcmVhdG9yPgogIDwvY3JlYXRvcnM+CiAgPHRpdGxlcz4KICAgIDx0aXRsZT5XZWxjb21lIHRvIHRoZSBEYXRhQ2l0ZSBUZWFtLCBSaWNoYXJkITwvdGl0bGU+CiAgPC90aXRsZXM+CiAgPHB1Ymxpc2hlcj5EYXRhQ2l0ZTwvcHVibGlzaGVyPgogIDxwdWJsaWNhdGlvblllYXI+MjAxODwvcHVibGljYXRpb25ZZWFyPgogIDxyZXNvdXJjZVR5cGUgcmVzb3VyY2VUeXBlR2VuZXJhbD0iVGV4dCI+QmxvZ1Bvc3Rpbmc8L3Jlc291cmNlVHlwZT4KICA8c3ViamVjdHM+CiAgICA8c3ViamVjdD5kYXRhY2l0ZTwvc3ViamVjdD4KICA8L3N1YmplY3RzPgogIDxkYXRlcz4KICAgIDxkYXRlIGRhdGVUeXBlPSJJc3N1ZWQiPjIwMTgtMDEtMTg8L2RhdGU+CiAgICA8ZGF0ZSBkYXRlVHlwZT0iQ3JlYXRlZCI+MjAxOC0wMS0xODwvZGF0ZT4KICAgIDxkYXRlIGRhdGVUeXBlPSJVcGRhdGVkIj4yMDE4LTAxLTE4PC9kYXRlPgogIDwvZGF0ZXM+CiAgPHJlbGF0ZWRJZGVudGlmaWVycz4KICAgIDxyZWxhdGVkSWRlbnRpZmllciByZWxhdGVkSWRlbnRpZmllclR5cGU9IkRPSSIgcmVsYXRpb25UeXBlPSJJc1BhcnRPZiIgcmVzb3VyY2VUeXBlR2VuZXJhbD0iVGV4dCI+MTAuNTQzOC8wMDAwLTAwc3M8L3JlbGF0ZWRJZGVudGlmaWVyPgogIDwvcmVsYXRlZElkZW50aWZpZXJzPgogIDx2ZXJzaW9uPjEuMDwvdmVyc2lvbj4KICA8cmlnaHRzTGlzdD4KICAgIDxyaWdodHMvPgogIDwvcmlnaHRzTGlzdD4KICA8ZGVzY3JpcHRpb25zPgogICAgPGRlc2NyaXB0aW9uIGRlc2NyaXB0aW9uVHlwZT0iQWJzdHJhY3QiPkRhdGFDaXRlIGlzIHBsZWFzZWQgdG8gd2VsY29tZSBSaWNoYXJkIEhhbGxldHQgdG8gb3VyIHRlYW0uIFJpY2hhcmQgam9pbmVkIERhdGFDaXRlIGFzIGFwcGxpY2F0aW9uIGRldmVsb3BlciBpbiBEZWNlbWJlci4gR2V0IHRvIGtub3cgaGltIGJldHRlciB2aWEgdGhpcyBpbnRlcnZpZXcuIFJpY2hhcmQgSGFsbGV0dCBDYW4geW91IHRlbGwgdXMgYSBsaXR0bGUgYml0IGFib3V0IHdoYXQgeW91IGRpZCBiZWZvcmUgeW91IHN0YXJ0ZWQuLi48L2Rlc2NyaXB0aW9uPgogIDwvZGVzY3JpcHRpb25zPgogIDxnZW9Mb2NhdGlvbnM+CiAgICA8Z2VvTG9jYXRpb24vPgogIDwvZ2VvTG9jYXRpb25zPgo8L3Jlc291cmNlPgo=",
104+
"url": "https://blog.datacite.org/welcome-to-team-richard/",
105+
"contentUrl": null,
106+
"metadataVersion": 5,
107+
"schemaVersion": null,
108+
"source": null,
109+
"isActive": true,
110+
"state": "findable",
111+
"reason": null,
112+
"created": "2018-03-17T06:33:00.000Z",
113+
"registered": "2018-10-17T05:48:57.000Z",
114+
"published": "2018",
115+
"updated": "2019-08-10T08:02:12.000Z"
116+
},
117+
"relationships": {
118+
"client": {
119+
"data": {
120+
"id": "datacite.blog",
121+
"type": "clients"
122+
}
123+
},
124+
"provider": {
125+
"data": {
126+
"id": "dryad",
127+
"type": "providers"
128+
}
129+
},
130+
"media": {
131+
"data": {
132+
"id": "10.5438/prvv-nv23",
133+
"type": "media"
134+
}
135+
}
136+
}
137+
},
138+
"included": [
139+
{
140+
"id": "datacite.blog",
141+
"type": "clients",
142+
"attributes": {
143+
"name": "DataCite Blog",
144+
"symbol": "DATACITE.BLOG",
145+
"year": 2019,
146+
"contactEmail": "info@datacite.org",
147+
"alternateName": null,
148+
"description": null,
149+
"language": null,
150+
"clientType": "repository",
151+
"domains": "*",
152+
"issn": null,
153+
"url": "https://blog.datacite.org",
154+
"created": "2019-01-02T14:27:23.000Z",
155+
"updated": "2019-01-02T17:22:42.000Z",
156+
"isActive": true,
157+
"hasPassword": true
158+
},
159+
"relationships": {
160+
"provider": {
161+
"data": {
162+
"id": "datacite",
163+
"type": "providers"
164+
}
165+
},
166+
"prefixes": {
167+
"data": [
168+
{
169+
"id": "10.5438",
170+
"type": "prefixes"
171+
}
172+
]
173+
}
174+
}
175+
}
176+
]
177+
}

tests/integration/test_catalogs.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import json
2+
from viringo import catalogs
3+
from viringo.services import datacite
4+
def test_build_metadata_null_dates(mocker):
5+
mocked_requests_get = mocker.patch('viringo.services.datacite.requests.get')
6+
with open('tests/integration/fixtures/datacite_api_doi_dateproblems.json') as json_file:
7+
data = json.load(json_file)
8+
mocked_requests_get.return_value.status_code = 200
9+
mocked_requests_get.return_value.json.return_value = data
10+
11+
result = datacite.get_metadata("10.5438/prvv-nv23")
12+
13+
oai_server = catalogs.DataCiteOAIServer()
14+
meta = oai_server.build_metadata_map(
15+
result
16+
)
17+
assert meta.get('date') == ['2018', 'Updated: 2018-01-18']

viringo/catalogs.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -240,8 +240,10 @@ def build_metadata_map(self, result):
240240
dates = []
241241
if result.publication_year:
242242
dates.append(str(result.publication_year))
243-
dates.extend([date['type'] + ": " + str(date['date'])
244-
for date in result.dates])
243+
date_strings = [
244+
f"{d.get('type')}: {d.get('date')}" for d in result.dates
245+
]
246+
dates.extend(date_strings)
245247

246248
rights = []
247249
for right in result.rights:

0 commit comments

Comments
 (0)