From b96964bd867c17619cfaf62da517852ac35cdb1c Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Thu, 20 Dec 2018 23:27:22 -0800 Subject: update TODO --- TODO | 122 +++++++++++++++++++------------------------------------------------ 1 file changed, 34 insertions(+), 88 deletions(-) diff --git a/TODO b/TODO index 28c83ee9..e1a2417d 100644 --- a/TODO +++ b/TODO @@ -1,89 +1,42 @@ ## Next Up -PLAN: -x update openapi schema with all the below -x python tests (that fail) -x rust stubs (to compile) -- rust tests - => get and delete edits - => redirect an entity (via PUT) - => un-delete an entity (via PUT) -- implement until rust tests pass -- implement until python tests pass - -- nomination form/thing for long-tail fatcat targets -- check on LOCKSS -- ask adam for nagios/ansible setup -- arxiv.org mirror - - -DOCUMENT/TEST EDGE CASES: -- PUT updating entities in an editgroup: overwrite edit, or require previous - edit to be deleted first? -- prev_revision flag: must always be set as a sanity check for edits? what - about when previous state was deleted? -- when a redirect has the redirect target deleted, what happens? decision: - "state" shouldn't change without an update to the entity, though revision_id - and redirect_id *can* change -- "redirect to redirect" condition. decision: leaf should have redirect_id set - to end of chain... but need to worry about the delete/undelete states in that - case -- edit to redirect A to B is started. B is updated and/or redirected and/or - deleted. then A edit is merged. ensure that editgroup accept process handles - this correctly -- auto-accpet behavior when there were other edits in same group already (or - should we just disallow that?) -- "current editgroup" behavior, which should probably just disallow -- use of "state" in entities as a flag for redirects and direct revision - updates -- reverting to current version isn't allowed -- get of "wip" entities; make sure to check status? hrmpf. -- consider dropping CORE identifier - -NOTE: maybe in the future we can make it easier on ourselves by just saying - that if an entity has redirects to it, it can't be deleted or redirected - -x TODO: don't allow redirect to "wip" rows - => needs test (python) -- TODO: fix returned error messages; should return type (shortname), and then - actual message/description -- TODO: maybe better success return message? -- allow 'expand' in lookups (particularly for releases/files) - => needs test (python or rust) -- idea: allow users to generate their own editgroup UUIDs, to reduce a round - trips and "hanging" editgroups (created but never edited) -- API: deletion of empty, un-accepted editgroups -- TODO: elastic inserter should handle deletions and redirects; if state isn't +- all errors should result in transaction rollback +- test: re-deleting a deleted entity should be 4xx, not 5xx +- test: can't delete an accepted edit +- test: redirect to a WIP row +- test: revert to current version (should be disallowed) +- test: hide/expand in lookups +- test: python get revision endpoint, whether accepted or now +- test: GET redirects endpoint +- test: additional edits, editgroup already accepted +- test: prev_rev in various cases +- test: release pointing to a collection that has been deleted/redirected (etc) +- many webface tests: + => entity redirects, wip, deletions + => sub-entity redirects, wip, deletions +- test: new release points to new container; then container deleted from + editgroup and editgroup accepted + => also web UI +- handle wip, deleted, redirects in web UI +- remove the concept of "active editgroup" +- elastic inserter should handle deletions and redirects; if state isn't active, delete the document => and an end-to-end test of this behavior. hoo-boy. +- release_year (in addition to date) -- test/read: fetching deleted and redirected entities via API and web interface -- large refactor: make many endpoints entity-agnostic (passing entity-type as a param) - -- redirecting and reverting endpoints - => in PUT, path for handling redirect_ident or revision - => this means can't have any required fields for any entities in API schema -- insertion of entity edit rows should be postgres upserts based on ident and editgroup - => need UNIQ constraint? -- python test: re-deleting a deleted entity should be 4xx, not 5xx -- python test: can't delete an accepted edit - -x API endpoints (GET, DELETE) for entity edits - => to allow removing individual edit from editgroup -x API endpoints (GET) for entity revisions -x API endpoints to find entities that redirect to an ident -- what to do with redirect-to-redirect, or deletion of redirect? - => for redirect-to-redirect, point to new redirect - => for deletion of redirect, keep redirect, but remove revision -x API endpoints additional lookup params - -- enforce "no editing if editgroup accepted" behavior -- require and enforce "previous_rev" required in updates -- redirect rev_id needs to be updated when primary changes -- redirect/delete/update/lifecycle tests and completeness -- basic webface creation, editing, merging, editgroup approval +## Ideas +- fast path to skip recursive redirect checks for bulk inserts +- when getting "wip" entities, require a parameter ("allow_wip"), else get a + 404 +- consider dropping CORE identifier +- fix returned error messages; should return type (shortname), and then actual + message/description +- maybe better 'success' return message? eg, "success: true" flag +- idea: allow users to generate their own editgroup UUIDs, to reduce a round + trips and "hanging" editgroups (created but never edited) +- API: allow deletion of empty, un-accepted editgroups - refactor API schema for some entity-generic methos (eg, history, edit operations) to take entity type as a URL path param. greatly reduce macro foolery and method count/complexity, and ease creation of new entities @@ -95,13 +48,10 @@ x API endpoints additional lookup params - refactors and correctness in rust/TODO - importers have editor accounts and include editgroup metadata -- enforce single-ident-edit-per-editgroup - => entity_edit: entity_ident/entity_editgroup should be UNIQ index - => UPDATE/REPLACE edits? - crossref importer sets release_type as "stub" when appropriate -- re-implement old python tests - real authentication and authorization - metrics, jwt, config, sentry +- importers: don't insert wayback links with short timestamps ## Metadata Import @@ -126,13 +76,9 @@ new importers: ## Entity/Edit Lifecycle -- redirects and merges (API, webface, etc) -- test: release pointing to a collection that has been deleted/redirected - => UI crash? +- redirects and merges (webface, etc) - commenting and accepting editgroups - editgroup state machine? -- enforce "single ident edit per editgroup" - => how to "edit an edit"? clobber existing? ## Guide / Book / Style -- cgit v1.2.3