Suggest a publication from its DOI or the person's ORCID record (#688) #1062
No reviewers
Labels
No labels
accessibility
authentication
breaking change
bug
documentation
enhancement
interface
internationalisation
observability
performance
security
tier
1
tier
2
tier
3
tier/4
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Postulo/postulo!1062
Loading…
Reference in a new issue
No description provided.
Delete branch "688-publication-lookup"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Typing a paper's authors, venue, volume and pages by hand is the part of adding a
publication nobody wants to do. Two buttons now ask a public registry, and only when
pressed:
negotiation (CSL JSON); doi.org passes it to Crossref, DataCite or mEDRA. The button
posts the whole form (formaction, so it works with scripts off) and the form is drawn
back unsaved with only the empty boxes filled, saying which and from which service.
A new entry still on its opening type takes the record's type; a saved one never does.
who stored an ORCID, and always asks about that one: one request to ORCID's Anonymous
API for the works summary, a review page that marks what is held (same DOI, else title
and year), ticks none, lists at most 100 and adds at most 20, from the summary alone.
resume/lookups.py makes both requests through the public-only client inside until(),
read with read_body: fixed hosts, the identifier percent-encoded into the path alone,
three https redirects at most, each approved by the guard, 2 MiB or 4 MiB and ten
seconds, no retry, no email address sent. What is kept is a short list read as untrusted
text: markup, control and bidirectional characters stripped, cut to each column, up to
100 authors then "and others"; the abstract, references, funders and the record's URL
are never read into anything. Crossref's, CSL's and ORCID's type names all map, and an
unknown one is Other.
Each press spends POSTULO_LOOKUP_RATE (20/h by default), before the request, so a
failure costs one too. A feature plugin, publication-lookups, on by default, hides both
buttons and makes both addresses answer 404 when switched off. The threat model says
what leaves the instance and when.
Closes #688
Notes for review
self.thesismaps tophdthesis.publication_lookupsships its own catalogues, per the plugin locale rule. Its Weblate component still has to be added.🤖 Generated with Claude Code
0de307b8db24b4afb5b424b4afb5b439813c73db