Skip to content

Commit 6a9173c

Browse files
authored
fix: fixed serialization of creators (#550)
1 parent db39083 commit 6a9173c

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

renku/models/datasets.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,17 @@ class Language:
156156
name = jsonld.ib(default=None, kw_only=True, context='schema:name')
157157

158158

159+
def _convert_dataset_files_creators(value):
160+
"""Convert dataset files creators."""
161+
coll = value
162+
163+
if isinstance(coll, dict):
164+
return [Creator.from_jsonld(coll)]
165+
166+
if isinstance(coll, list):
167+
return [Creator.from_jsonld(c) for c in coll]
168+
169+
159170
@jsonld.s(
160171
type='schema:DigitalDocument',
161172
slots=True,
@@ -165,7 +176,10 @@ class DatasetFile(CreatorsMixin):
165176
"""Represent a file in a dataset."""
166177

167178
creator = jsonld.container.list(
168-
Creator, kw_only=True, context='schema:creator'
179+
Creator,
180+
converter=_convert_dataset_files_creators,
181+
kw_only=True,
182+
context='schema:creator'
169183
)
170184

171185
added = jsonld.ib(context='schema:dateCreated', kw_only=True)
@@ -229,7 +243,7 @@ def _convert_dataset_files(value):
229243
def _convert_dataset_creator(value):
230244
"""Convert dataset creators."""
231245
if isinstance(value, dict): # compatibility with previous versions
232-
return Creator.from_jsonld(value)
246+
return [Creator.from_jsonld(value)]
233247

234248
if isinstance(value, list):
235249
return [Creator.from_jsonld(v) for v in value]

tests/cli/test_datasets.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -728,6 +728,7 @@ def test_dataset_import_real_doi(runner, project):
728728
('10.5281/zenodo.3239984', 'n'),
729729
('10.5281/zenodo.3239982', 'n'),
730730
('10.5281/zenodo.3239980', 'n'),
731+
('10.5281/zenodo.3188334', 'y'),
731732
]
732733
)
733734
@pytest.mark.integration
@@ -741,6 +742,9 @@ def test_dataset_import_real_param(doi, runner, project):
741742
if 'y' == doi[1]:
742743
assert 'OK' in result.output
743744

745+
result = runner.invoke(cli.cli, ['dataset'])
746+
assert 0 == result.exit_code
747+
744748

745749
@pytest.mark.integration
746750
def test_dataset_import_real_doi_warnings(runner, project):

0 commit comments

Comments
 (0)