routes/views: - sources and account page as fake links (#) - "current editgroup" redirect - per-editor history - actually wire up work/release creation form next/high-level: - release, container, creator lookups (by external id) => creator obj to have ORCID column - crossref import script: => creator/container caching => edit group - ORCID and ISSN import scripts - client export: => one json-nl file per entity type - flask-apispec - swagger API docs? - naive API-based import scripts for: journals (norwegian), orcid, crossref - switch to marshmallow in create APIs (at least for revs) model: - 'parent rev' for revisions (vs. container parent) - helpers to deal with edits and edit groups (?) api - expose edit_group and editor - work merge helper tests - api gets: creator, container, editgroup - implicit editor.active_edit_group behavior - modify existing release via edit mechanism (and commit) - merge two releases - update (via edit) a redirect release - merge two works (combining releases) - api: try to reuse an accepted edit group - api: try to modify an accepted edit - api: multiple edits, same entity review - hydrate in files for releases... nested good enough? - add a 'live' (or 'immutable') flag to revision tables - how to encode proposed redirects? history goes in changelog => proposed_ident_action table, which points to edits => ident in edit as a partial solution (not redirects) => extend edit object to have "to/from" info, and be per-entity views - my edits/groups - oldest edits/edit-groups later: - switch extra_json to just be a column - extra_json uniqueness - extra_json marshmallow fixes - "hydrate" files (and maybe container/authors/refs) in release - transclude primary_release in work - crossref json import script/benchmark => maybe both "raw" and string-dedupe? - public IDs are UUID (sqlite hack?) ## High-Level Priorities - manual editing of containers and works/releases - bulk loading of releases, files, containers, creators - accurate auto-matching matching of containers (eg, via ISSN) - full database dump and reload ## Planning... - stick with python through: - initial benchmarking - postgres/cockroach - full dump/load - UUID switch - JSONB/extra_json experiments - SQL query examples/experiments