diff options
author | bnewbold <bnewbold@archive.org> | 2020-03-26 22:35:28 +0000 |
---|---|---|
committer | bnewbold <bnewbold@archive.org> | 2020-03-26 22:35:28 +0000 |
commit | ea241c0718407285774bff85e4b3b99aed0b9186 (patch) | |
tree | f28b9730adc570347ad48b17bb0482d1c9ced3c8 /python/fatcat_tools/transforms | |
parent | ec82404f0d0ad6b92491a1cb90a823d421857348 (diff) | |
parent | ec15f162706da58c464b5c2b7b623920fcb96d7f (diff) | |
download | fatcat-ea241c0718407285774bff85e4b3b99aed0b9186.tar.gz fatcat-ea241c0718407285774bff85e4b3b99aed0b9186.zip |
Merge branch 'bnewbold-citeproc-fixes' into 'master'
improve citeproc/CSL web interface
See merge request webgroup/fatcat!36
Diffstat (limited to 'python/fatcat_tools/transforms')
-rw-r--r-- | python/fatcat_tools/transforms/csl.py | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/python/fatcat_tools/transforms/csl.py b/python/fatcat_tools/transforms/csl.py index 7ab94cac..832ad6aa 100644 --- a/python/fatcat_tools/transforms/csl.py +++ b/python/fatcat_tools/transforms/csl.py @@ -37,8 +37,9 @@ def release_to_csl(entity): # Default to "local" (publication-specific) metadata; fall back to # creator-level family = contrib.surname or contrib.creator.surname or (contrib.raw_name and contrib.raw_name.split()[-1]) - if not contrib.raw_name: - raise ValueError("CSL requires some surname (family name)") + if not family: + # CSL requires some surname (family name) + continue c = dict( family=family, given=contrib.given_name or contrib.creator.given_name, @@ -49,22 +50,27 @@ def release_to_csl(entity): #static-ordering literal=contrib.raw_name or contrib.creator.display_name, #parse-names, - role=contrib.role, + # role must be defined; default to author + role=contrib.role or 'author', ) else: family = contrib.surname or (contrib.raw_name and contrib.raw_name.split()[-1]) - if not contrib.raw_name: - raise ValueError("CSL requires some surname (family name)") + if not family: + # CSL requires some surname (family name) + continue c = dict( family=family, given=contrib.given_name, literal=contrib.raw_name, - role=contrib.role, + # role must be defined; default to author + role=contrib.role or 'author', ) for k in list(c.keys()): if not c[k]: c.pop(k) contribs.append(c) + if not contribs: + raise ValueError("citeproc requires at least one author with a surname") abstract = None if entity.abstracts: abstract = entity.abstracts[0].content |