summaryrefslogtreecommitdiffstats
path: root/TODO
blob: 90ef967e885415a9883a27cc3824d47ac76c88b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78

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