Commit graph

172 commits

Author SHA1 Message Date
Jennifer Richards 3705bedfcd
feat: Celery support and asynchronous draft submission API (#4037)
* ci: add Dockerfile and action to build celery worker image

* ci: build celery worker on push to jennifer/celery branch

* ci: also build celery worker for main branch

* ci: Add comment to celery Dockerfile

* chore: first stab at a celery/rabbitmq docker-compose

* feat: add celery configuration and test task / endpoint

* chore: run mq/celery containers for dev work

* chore: point to ghcr.io image for celery worker

* refactor: move XML parsing duties into XMLDraft

Move some PlaintextDraft methods into the Draft base class and
implement for the XMLDraft class. Use xml2rfc code from ietf.submit
as a model for the parsing.

This leaves some mismatch between the PlaintextDraft and the Draft
class spec for the get_author_list() method to be resolved.

* feat: add api_upload endpoint and beginnings of async processing

This adds an api_upload() that behaves analogously to the api_submit()
endpoint. Celery tasks to handle asynchronous processing are added but
are not yet functional enough to be useful.

* perf: index Submission table on submission_date

This substantially speeds up submission rate threshold checks.

* feat: remove existing files when accepting a new submission

After checking that a submission is not in progress, remove any files
in staging that have the same name/rev with any extension. This should
guard against stale files confusing the submission process if the
usual cleanup fails or is skipped for some reason.

* refactor: make clear that deduce_group() uses only the draft name

* refactor: extract only draft name/revision in clean() method

Minimizing the amount of validation done when accepting a file. The
data extraction will be moved to asynchronous processing.

* refactor: minimize checks and data extraction in api_upload() view

* ci: fix dockerfiles to match sandbox testing

* ci: tweak celery container docker-compose settings

* refactor: clean up Draft parsing API and usage

  * remove get_draftname() from Draft api; set filename during init
  * further XMLDraft work
    - remember xml_version after parsing
    - extract filename/revision during init
    - comment out long broken get_abstract() method
  * adjust form clean() method to use changed API

* feat: flesh out async submission processing

First basically working pass!

* feat: add state name for submission being validated asynchronously

* feat: cancel submissions that async processing can't handle

* refactor: simplify/consolidate async tasks and improve error handling

* feat: add api_submission_status endpoint

* refactor: return JSON from submission api endpoints

* refactor: reuse cancel_submission method

* refactor: clean up error reporting a bit

* feat: guard against cancellation of a submission while validating

Not bulletproof but should prevent

* feat: indicate that a submission is still being validated

* fix: do not delete submission files after creating them

* chore: remove debug statement

* test: add tests of the api_upload and api_submission_status endpoints

* test: add tests and stubs for async side of submission handling

* fix: gracefully handle (ignore) invalid IDs in async submit task

* test: test process_uploaded_submission method

* fix: fix failures of new tests

* refactor: fix type checker complaints

* test: test submission_status view of submission in "validating" state

* fix: fix up migrations

* fix: use the streamlined SubmissionBaseUploadForm for api_upload

* feat: show submission history event timestamp as mouse-over text

* fix: remove 'manual' as next state for 'validating' submission state

* refactor: share SubmissionBaseUploadForm code with Deprecated version

* fix: validate text submission title, update a couple comments

* chore: disable requirements updating when celery dev container starts

* feat: log traceback on unexpected error during submission processing

* feat: allow secretariat to cancel "validating" submission

* feat: indicate time since submission on the status page

* perf: check submission rate thresholds earlier when possible

No sense parsing details of a draft that is going to be dropped regardless
of those details!

* fix: create Submission before saving to reduce race condition window

* fix: call deduce_group() with filename

* refactor: remove code lint

* refactor: change the api_upload URL to api/submission

* docs: update submission API documentation

* test: add tests of api_submission's text draft consistency checks

* refactor: rename api_upload to api_submission to agree with new URL

* test: test API documentation and submission thresholds

* fix: fix a couple api_submission view renames missed in templates

* chore: use base image + add arm64 support

* ci: try to fix workflow_dispatch for celery worker

* ci: another attempt to fix workflow_dispatch

* ci: build celery image for submit-async branch

* ci: fix typo

* ci: publish celery worker to ghcr.io/painless-security

* ci: install python requirements in celery image

* ci: fix up requirements install on celery image

* chore: remove XML_LIBRARY references that crept back in

* feat: accept 'replaces' field in api_submission

* docs: update api_submission documentation

* fix: remove unused import

* test: test "replaces" validation for submission API

* test: test that "replaces" is set by api_submission

* feat: trap TERM to gracefully stop celery container

* chore: tweak celery/mq settings

* docs: update installation instructions

* ci: adjust paths that trigger celery worker image  build

* ci: fix branches/repo names left over from dev

* ci: run manage.py check when initializing celery container

Driver here is applying the patches. Starting the celery workers
also invokes the check task, but this should cause a clearer failure
if something fails.

* docs: revise INSTALL instructions

* ci: pass filename to pip update in celery container

* docs: update INSTALL to include freezing pip versions

Will be used to coordinate package versions with the celery
container in production.

* docs: add explanation of frozen-requirements.txt

* ci: build image for sandbox deployment

* ci: add additional build trigger path

* docs: tweak INSTALL

* fix: change INSTALL process to stop datatracker before running migrations

* chore: use ietf.settings for manage.py check in celery container

* chore: set uid/gid for celery worker

* chore: create user/group in celery container if needed

* chore: tweak docker compose/init so celery container works in dev

* ci: build mq docker image

* fix: move rabbitmq.pid to writeable location

* fix: clear password when CELERY_PASSWORD is empty

Setting to an empty password is really not a good plan!

* chore: add shutdown debugging option to celery image

* chore: add django-celery-beat package

* chore: run "celery beat" in datatracker-celery image

* chore: fix docker image name

* feat: add task to cancel stale submissions

* test: test the cancel_stale_submissions task

* chore: make f-string with no interpolation a plain string

Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2022-08-22 13:29:31 -05:00
Robert Sparks c89f7c89c5
feat: begin supporting the new rfc editor model (#3960)
* feat: restructure rfcedtype groups. add rpc, rswg, rsab.

* feat: show rfc editor groups on menu

* feat: add the editorial stream

* fix: repair broken html and extent dest coverage.

* chore: address Lars review comment

* chore: update copyright notices.
2022-05-20 12:22:17 -05:00
Jennifer Richards 966e1c806a
chore: remove editor_label field from ConstraintName model (#3783) 2022-04-14 15:30:11 -03:00
Lars Eggert dec56ffb96 Merge my bs5 changes over.
There is definitely still quite some breakage, my main focus during
the conflict resolution was not to drop any changes made by others.
 - Legacy-Id: 19632
2021-11-11 13:09:23 +00:00
Lars Eggert 726b29bf74 fontawesome -> bootstrap-icons
- Legacy-Id: 19608
2021-11-10 09:28:38 +00:00
Jennifer Richards 0706f8519f Update migrations and fix a few failing tests. Branch ready for merge.
- Legacy-Id: 19571
2021-11-09 02:40:54 +00:00
Jennifer Richards 7b35c09c40 Eliminate the officehours timeslot type, update/renumber migrations, mark offagenda/reserved TimeSlotTypeNames as not used, add a 'none' SessionPurposeName and disallow null, update agenda filter keywords/filter helpers, fix broken tests and general debugging
- Legacy-Id: 19550
2021-11-04 17:06:06 +00:00
Jennifer Richards 3dfce7b850 Update purpose/types after discussions, add on_agenda Session field, prevent session requests for groups with no allowed purpose, handle addition fields in session request, fix editing session requests, add session edit form/access from schedule editor, eliminate TimeSlotTypeName "private" field, add server-side timeslot type filtering to schedule editor
- Legacy-Id: 19549
2021-11-04 17:01:32 +00:00
Jennifer Richards 3be50d6e39 Update session purposes and group type -> purpose map to match notes page, change 'session' purpose to 'regular'
- Legacy-Id: 19433
2021-10-18 14:48:36 +00:00
Jennifer Richards 173e438aee Add 'closed' session purpose, assign purposes for nomcom groups, and update schedule editor to enforce timeslot type and allow blurring sessions by purpose
- Legacy-Id: 19427
2021-10-15 19:33:33 +00:00
Jennifer Richards 1054f90873 Snapshot of dev work to add session purpose annotation
- Legacy-Id: 19415
2021-10-12 17:08:58 +00:00
Robert Sparks d5b0bc6ccc Reordered migrations. Updated name fixture.
- Legacy-Id: 19336
2021-09-04 15:33:53 +00:00
Robert Sparks ff5707b5f0 Merged in [19307] from rjsparks@nostrum.com:
Add IAB Administrative Support Group group type. Add IAB groups to the group menu. Clearly delineate group types in the group menu. Fixes #3295 and #3296.
 - Legacy-Id: 19328
Note: SVN reference [19307] has been migrated to Git commit d42730300a
2021-09-03 21:29:12 +00:00
Robert Sparks d42730300a Add IAB Administrative Support Group group type. Add IAB groups to the group menu. Clearly delineate group types in the group menu. Fixes #3295 and #3296. Commit ready for merge.
- Legacy-Id: 19307
2021-08-30 19:39:21 +00:00
Jennifer Richards 2060173f3a Improve proceedings display with new title block, configurable host logos, and additional PDF or URL materials. Fixes #3147. Commit ready for merge.
- Legacy-Id: 19306
2021-08-30 17:02:49 +00:00
Robert Sparks 805d1f4a7e Use BOF consistently.
- Legacy-Id: 19212
2021-07-14 17:33:14 +00:00
Robert Sparks 338da98661 merged forward. Gave IAB same abilities as IESG.
- Legacy-Id: 19201
2021-07-06 20:19:12 +00:00
Robert Sparks 6b383255ad Staging for merge forward
- Legacy-Id: 19199
2021-07-06 18:05:54 +00:00
Jennifer Richards 66b9c41dcc Add ConstraintNames for chair, tech, and key participant conflicts. Replace temporary UI workaround with proper conflict type handling. Fixes #3083. Commit ready for merge.
- Legacy-Id: 19103
2021-06-09 19:36:27 +00:00
Peter E. Yee 12a5e04689 Modifies stream name descriptions and changes document page to use the description instead of the stream name. Fixes issue 3169. Commit ready for merge.
- Legacy-Id: 18862
2021-02-24 03:11:50 +00:00
Jennifer Richards df37793e14 Use Roles instead of dedicated model for liaison statement group contacts. Fixes #3100. Commit ready for merge.
- Legacy-Id: 18828
2021-02-12 16:39:20 +00:00
Jennifer Richards 233bff8196 Improve handling of submissions for closed working groups. Fixes #3058. Commit ready for merge.
- Legacy-Id: 18798
2021-01-18 14:55:25 +00:00
Henrik Levkowetz f9b3e2e477 Merged in ^/branch/iola/meeting-improvement-r18382@18466. This provides a beta-level snapshot of the new schedule editor work. All known issues should be fixed, but there might be adjustments needed after experience with using the new edit view.
- Legacy-Id: 18467
2020-09-04 14:28:25 +00:00
Henrik Levkowetz 2603bf4a23 Merged in [18371] from mark@painless-security.com:
Track slide submissions even after acceptance or rejection.  Fixes #2835.
 - Legacy-Id: 18421
Note: SVN reference [18371] has been migrated to Git commit 21ba67fb79
2020-08-26 16:47:35 +00:00
Ole Laursen 2029fb74fa Add private bit to time slot types so that it can be configured in the
admin instead of hardcoding the list of private sessions types in the
code.
 - Legacy-Id: 18402
2020-08-21 12:15:52 +00:00
Ole Laursen a39fa7f967 New branch from trunk @ r18382 for meeting improvements, with iola/meeting-improvement-r17835 merged in
- Legacy-Id: 18385
2020-08-20 09:36:41 +00:00
Mark J. Donnelly 21ba67fb79 Track slide submissions even after acceptance or rejection. Fixes #2835. Commit ready for merge.
- Legacy-Id: 18371
2020-08-13 13:48:01 +00:00
Henrik Levkowetz 07d60de46e Merged in /branch/iola/meeting-improvement-r17835@18048. This provides a new snapshot of the new schedule editor work, with improved edit page layout and details.
- Legacy-Id: 18358
2020-08-12 19:16:18 +00:00
Henrik Levkowetz 0ac92d3ae4 Merged in [18299] from rjsparks@nostrum.com:
Missing migrations from 18298.
 - Legacy-Id: 18309
Note: SVN reference [18299] has been migrated to Git commit e7e1cc2a8e
2020-07-29 14:37:51 +00:00
Henrik Levkowetz 12cc7a945a Undid an ordering dependency for migration name.0015_populate_extref.
- Legacy-Id: 18219
2020-07-22 20:24:48 +00:00
Henrik Levkowetz 34922f34d7 Merged in [18207] from rjsparks@nostrum.com:
Add the migration intended to go with r18206.
 - Legacy-Id: 18217
Note: SVN reference [18207] has been migrated to Git commit 715be93f1b
2020-07-22 13:06:26 +00:00
Henrik Levkowetz 606cedd796 Merged in the ExtResource work from rjsparks@nostrum.com, based on a feature request and contributions from rsalz@akamai.com. This provides external resource models for Person, Group, and Document models, as a generalisation of the previous related-URL concept. This provides a consistent labelling and classification of URLs and other resources related to a Group, Document, or Person. The GroupURL (and similar) classes will be removed in a later step. Some DocumentURL instances (such as auth48 URLs) remain to convert, as they have come in with other merged-in work while the ExtResource work was in transit.
- Legacy-Id: 18192
2020-07-20 01:58:26 +00:00
Henrik Levkowetz 4fa431651c Renumbered some migrations to avoid multiple leaf nodes.
- Legacy-Id: 18169
2020-07-14 17:40:41 +00:00
Henrik Levkowetz a7b3d9c83b Merged in [18157] from jennifer@painless-security.com:
Store Auth48 URL as DocumentURL and display in RFC-Editor state. Migrates old data when possible. Alternative to 17563. Fixes #2722.
 - Legacy-Id: 18166
Note: SVN reference [18157] has been migrated to Git commit fff927b085
2020-07-14 11:22:11 +00:00
Robert Sparks 99df95d542 Cleaned up created names. Improved validation during migration. Cleaned up migration output. Cleaned the last of the awp includes from secr views. Removed now unused secr templates. Build extresource urls correctly during submission and when creating group wikis.
- Legacy-Id: 18158
2020-07-13 16:03:39 +00:00
Jennifer Richards fff927b085 Store Auth48 URL as DocumentURL and display in RFC-Editor state. Migrates old data when possible. Alternative to 17563. Fixes #2722. Commit ready for merge.
- Legacy-Id: 18157
2020-07-13 15:34:01 +00:00
Robert Sparks 53f7bc3ce6 migrated forward
- Legacy-Id: 18144
2020-07-09 21:07:05 +00:00
Robert Sparks 066ee27505 preparing to merge forward
- Legacy-Id: 18143
2020-07-09 20:29:45 +00:00
Ole Laursen 45ed2c5a2c Add support in the new meeting schedule editor for making a tombstone
session when rescheduling a session after the schedule is made the
official meeting schedule.

Show both cancelled and rescheduled sessions as tombstones in the new
meeting schedule editor.

Add support for showing rescheduled tombstones in the meeting agenda
views.

Adjust the Secretariat session tool so that it's not possible to
(re)cancel cancelled or rescheduled tombstones.
 - Legacy-Id: 18108
2020-06-30 16:55:24 +00:00
Robert Sparks bf53bf1057 Merged forward. Added some missing parts to the XMPPURLValidator.
- Legacy-Id: 18050
2020-06-24 19:01:45 +00:00
Ole Laursen 49d4be8d17 Rework the new meeting editor label formatting to store the icon
references directly in the database as HTML.

Rework the label update migration to take this into account (can be
rerun by running "ietf/manage.py migrate name 0011 --fake" first).

Add a little bit of support for the recently added constraints types -
the JS does not hint about them, but they do show up without looking
silly.
 - Legacy-Id: 18033
2020-06-22 17:33:54 +00:00
Ole Laursen 27384a1935 Make constraint hints more obvious. Show constraints in the session
information panel.
 - Legacy-Id: 17971
2020-06-11 17:22:36 +00:00
Henrik Levkowetz ff0279e7ae Added a new role 'Robot', for use with reg-system and mail-archive automated accesses.
- Legacy-Id: 17933
2020-06-08 19:16:23 +00:00
Robert Sparks d87a1d009b Map some new urls. Create a new external resource type
- Legacy-Id: 17873
2020-05-21 21:46:51 +00:00
Robert Sparks 7e57be2bd3 merged forward ^/personal/rjs/explore-extref
- Legacy-Id: 17840
2020-05-19 18:47:47 +00:00
Henrik Levkowetz 0ee45ebb87 Renamed a migration (multiple leaf nodes)
- Legacy-Id: 17703
2020-04-28 17:59:07 +00:00
Henrik Levkowetz 42995fadea Merged in ^/branch/iola/meeting-improvement-r17214@17617, which provides a new meeting schedule editor.
- Legacy-Id: 17701
2020-04-28 14:34:34 +00:00
Robert Sparks 2de9eb93b5 Added validation to the migrations. Added external resources to the draft display page. Built an editor for DocExternalResources.
- Legacy-Id: 17683
2020-04-24 16:14:43 +00:00
Robert Sparks 672f9bce26 Added display-name. Refined migrations.
- Legacy-Id: 17646
2020-04-15 19:54:29 +00:00
Henrik Levkowetz f2b883d2bb Merged in ^/trunk@17617.
- Legacy-Id: 17618
2020-04-14 17:11:51 +00:00