Commit graph

219 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
Kesara Rathnayake 1869d375c4
fix: Update idnits service URL (#4330)
This change introduces a new configuration option: `IDNITS_SERVICE_URL`
to configure idnits service URL.
2022-08-18 12:25:44 -05:00
Lars Eggert c09fd9dad2
chore: Use URL resolver in more places (#4104)
* chore: Use URL resolver more

* Use settings.IDTRACKER_BASE_URL

* More fixes

* Use URL resolver for things under /accounts

* Use URL resolver for things under /stream

* Use URL resolver for things under /iesg

* Use URL resolver for things under /meeting

* Fix bugs

* Use URL resolver for things under /help

* Use URL resolver for things under /ipr

* More changes

* Revert vnu.jar

* Fix typos

* Address review comments by @rjsparks

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2022-06-22 14:10:16 -05:00
Lars Eggert 63d80bff4c
chore: Remove various unused template tags (#4101)
* chore: Remove various unused template tags

* Replace rfcnospace with parameterized prettystdname

* Use URL resolver

* Use the URL resolver more
2022-06-21 14:05:02 -05:00
Lars Eggert 6e97628a64
fix(ui): badge -> badge rounded-pill (#4076)
* ui: badge -> badge rounded-pill

To make badges look a little less like small buttons.

* Rip out copy&paste error
2022-06-15 13:43:49 -05:00
Lars Eggert 5598762608
fix: add more HTML validation & fixes (#3891)
* Update vnu.jar

* Fix py2 -> py3 issue

* Run pyupgrade

* test: Add default-jdk to images

* test: Add option to also validate HTML with vnu.jar

Since it's already installed in bin. Don't do this by default, since it
increases the time needed for tests by ~50%.

* fix: Stop the urlizer from urlizing in linkified mailto: text

* More HTML fixes

* More HTML validation fixes

* And more HTML fixes

* Fix floating badge

* Ignore unicode errors

* Only URLize docs that are existing

* Final fixes

* Don't URLize everything during test-crawl

* Feed HTML into vnu using python rather than Java to speed things up

* Allow test-crawl to start vnu on a different port

* Increase retry count to vnu. Restore batch size to 30.

* More HTML validation fixes

* Use urllib3 to make requests to vnu, since overriding requests_mock is tricky

* Undo commit of unmodified file

* Also urlize ftp links

* Fix matching of file name

* More HTML fixes

* Add `is_valid_url` filter

* weekday -> data-weekday

* urlencode URLs

* Add and use vnu_fmt_message. Bump vnu max buffer.

* Simplify doc_exists

* Don't add tab link to mail archive if the URL is invalid

* Run urlize_ietf_docs before linkify

Reduces the possibility of generating incorrect HTML

* Undo superfluous change

* Runner fixes

* Consolidate vnu message filtering into vnu_filter_message

* Correctly handle multiple persons with same name

* Minimze diff

* Fix HTML nits

* Print source snippet in vnu_fmt_message

* Only escape if there is something to escape

* Fix snippet

* Skip crufty old IPR declarations

* Only include modal when needed. Add handles.

* Fix wordwrap+linkification

* Update ietf/doc/templatetags/ietf_filters.py

* Update ietf/doc/templatetags/tests_ietf_filters.py

* Don't right-align second column
2022-05-03 13:55:48 -05:00
Lars Eggert 92e67aca8f
fix: Make the author button work on doc submit (#3850) 2022-04-20 10:52:54 -05:00
Lars Eggert 3234f1a121
test: Validate HTML rendered during tests (#3782) 2022-04-07 13:30:38 -03:00
Kesara Rathnayake 65439960fe
fix: Use an input field for draft submit status search (#3758) 2022-03-29 12:35:46 -05:00
Lars Eggert 870fed030f
fix: More fixes for narrow screens (#3662)
* fix: More fixes for narrow screens

Need to keep checking for issues, there are more.

* Make columns more narrow on narrow screens

* More fixes

* More fixes

* Test fixes

* Fix more tests

* Close tbody
2022-03-24 12:40:48 -03:00
Lars Eggert eb5423d084
ci: Also check generated HTML with the "vnu" validator (#3682)
* ci: Also check generated HTML with the "vnu" validator

Because HTML Tidy apparently misses a bunch of errors.

* thead -> tbody

* More fixes

* More fixes

* Start checker in test runner
2022-03-21 12:50:23 -05:00
Lars Eggert 323d890252
fix: Search for docalias, not document (#3635)
Fixes #3605.

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2022-03-14 11:49:23 -05:00
Jennifer Richards 6c260a5b7e Merge 7.45.1.dev0 into Bootstrap 5 update branch. Made a first pass at reconciling differences.
- Legacy-Id: 19945
2022-02-17 20:09:49 +00:00
Lars Eggert 37cb737987 Check the selenium console log for any issues as part of the test suite,
and fix/suppress errors found by that.
 - Legacy-Id: 19916
2022-02-10 21:20:20 +00:00
Lars Eggert bbf088e18b Hopefully the final check-ins.
- Legacy-Id: 19909
2022-02-08 17:29:15 +00:00
Lars Eggert ed30521e14 Many more HTML fixes.
- Legacy-Id: 19908
2022-02-03 07:49:34 +00:00
Lars Eggert 64d2ba2558 Run tidy as part of tests, and fix HTML issues it finds.
- Legacy-Id: 19904
2022-02-01 16:11:34 +00:00
Lars Eggert a507b31669 More nits fixed.
- Legacy-Id: 19903
2022-02-01 08:29:55 +00:00
Lars Eggert 53089a94f6 And more fixes.
- Legacy-Id: 19902
2022-02-01 07:47:25 +00:00
Lars Eggert cc723ce449 More fixes.
- Legacy-Id: 19899
2022-01-31 19:17:50 +00:00
Lars Eggert cf629a42ad And more fixes.
- Legacy-Id: 19877
2022-01-25 10:14:25 +00:00
Lars Eggert 6ca6c35186 More fixes.
- Legacy-Id: 19829
2022-01-11 15:02:27 +00:00
Lars Eggert 8bc7fde027 More fixes.
- Legacy-Id: 19828
2022-01-11 07:02:39 +00:00
Lars Eggert 6fa5fa073e More fixes.
- Legacy-Id: 19812
2022-01-06 12:26:10 +00:00
Lars Eggert f974fd3c04 Fix more things
- Legacy-Id: 19762
2021-12-09 06:41:00 +00:00
Robert Sparks f59c6b2a53 Change the I-D announce text to mention rsync instead of ftp per RFC9141 and its associated transition plan. Commit ready for merge.
- Legacy-Id: 19719
2021-12-01 16:49:20 +00:00
Lars Eggert 448c6dbe9e And more bs5 stuff
- Legacy-Id: 19717
2021-12-01 13:52:50 +00:00
Lars Eggert 9e038d3e98 Bring back some additional js dependencies.
- Legacy-Id: 19707
2021-11-24 14:32:35 +00:00
Lars Eggert a189b51b30 More template changes.
- Legacy-Id: 19706
2021-11-24 13:15:11 +00:00
Lars Eggert a9738bc2b2 Many more changes related to tablesorter.
- Legacy-Id: 19702
2021-11-23 15:31:34 +00:00
Lars Eggert a8764f225f Track CSS class name changes in bs5.
- Legacy-Id: 19663
2021-11-15 16:49:09 +00:00
Lars Eggert 6b7beb17bf panel -> card
- Legacy-Id: 19618
2021-11-10 12:59:12 +00:00
Lars Eggert bb5810a934 Labels are badges in bs5.
- Legacy-Id: 19616
2021-11-10 11:15:46 +00:00
Lars Eggert f17a7eddd4 pull-right -> float-end
- Legacy-Id: 19613
2021-11-10 09:57:57 +00:00
Lars Eggert 021ba39712 Reindent all templates with djhtml
- Legacy-Id: 19610
2021-11-10 09:41:11 +00:00
Lars Eggert 288b937ff5 django_bootstrap5 removed button/endbutton tags
- Legacy-Id: 19609
2021-11-10 09:35:10 +00:00
Lars Eggert 726b29bf74 fontawesome -> bootstrap-icons
- Legacy-Id: 19608
2021-11-10 09:28:38 +00:00
Lars Eggert 1d559374ec Replace glyphicons with bootstrap-icons.
- Legacy-Id: 19607
2021-11-10 08:08:02 +00:00
Lars Eggert 94b12af9da btn-default -> btn-primary
- Legacy-Id: 19606
2021-11-10 07:54:58 +00:00
Lars Eggert e92441b2f3 Fix sorter-false
- Legacy-Id: 19594
2021-11-09 17:49:11 +00:00
Lars Eggert 6b15c3de95 Fix nav-tabs
- Legacy-Id: 19593
2021-11-09 17:20:28 +00:00
Lars Eggert 9cf29baf5b table-condensed -> table-sm
- Legacy-Id: 19589
2021-11-09 14:21:05 +00:00
Lars Eggert 39d500de8f tablesorter -> datatables
https://datatables.net/ has way more features and better support, and bootstrap5
styling.
 - Legacy-Id: 19587
2021-11-09 14:16:13 +00:00
Lars Eggert df2565096d bootstrap3 -> django_bootstrap5
Only load the module, no other changes yet.
 - Legacy-Id: 19586
2021-11-09 14:09:28 +00:00
Lars Eggert b058ba28ec Remove the ability to submit Postscript I-Ds.
Commit ready for merge. Fixes #3448.
 - Legacy-Id: 19486
2021-10-28 16:24:29 +00:00
Lars Eggert 962253f994 Remove the Note Well from the datatracker and point to the IETF web site.
One less thing to keep in sync if the Note Well changes.

Commit ready for merge.
 - Legacy-Id: 19484
2021-10-28 13:08:10 +00:00
Lars Eggert e8a1e6c45a Restructure the I-D submission page.
While there is no change in functionality, we now by default only show
an option to submit XML, with other formats hidden behind a "Submit
other formats" checkbox. I also simplified the text on the page.

Commit ready for merge.
 - Legacy-Id: 19483
2021-10-28 12:07:43 +00:00
Robert Sparks 602d138fa2 Merged in [18997] from rjsparks@nostrum.com:
Changes to reflect repository moves.
 - Legacy-Id: 19006
Note: SVN reference [18997] has been migrated to Git commit ceb7121018f8dcb877c5777c487f6b49f49b70ed
2021-05-19 14:00:32 +00:00
Robert Sparks 4298cf08ab Merged in [18995] from rjsparks@nostrum.com:
Link only to datatracker htmlization. Adjust mail-to-authors and mail-to-list. Fixes #3261.
 - Legacy-Id: 19005
Note: SVN reference [18995] has been migrated to Git commit 06a46567b2c5778465466285398a72a195c2f4a5
2021-05-19 13:49:46 +00:00
Jennifer Richards b08110b838 Allow external resources to be set/suggested during submission process. Fixes #3068. Commit ready for merge.
- Legacy-Id: 18960
2021-04-19 20:21:19 +00:00