Commit graph

128 commits

Author SHA1 Message Date
Ryan Cross 5b6695a04c
fix: save MeetingRegistration.checkedin as boolean value (#4446) 2022-09-14 09:55:08 -05:00
Robert Sparks d3f25a67b5
test: address data type issue in reg api tests. (#4428) 2022-09-09 10:34:59 -05:00
Ryan Cross ad08ccad27
feat: add checkedin to api_new_meeting_registration() (#4424) 2022-09-09 08:56:13 -05:00
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 9c236ea2a2
chore: remove unneeded logging and code marked unreachable that has not been reached. (#4305)
* chore: remove unneeded logging and code marked unreachable that has not been reached.

* fix: remove noop save override
2022-08-04 11:25:31 -05:00
Nicolas Giard aea533e4dd
fix: add missing slides + minutes tabs to session materials dialog #4274 (#4275)
* fix: handle session dropdown link on mobile view

* feat: agenda session materials API endpoint

* feat: agenda-neue - add slides + minutes tabs to session materials dialog

* fix: remove commented line leftover
2022-07-26 09:30:20 -05:00
Nicolas Giard a605b08de6
feat: load agenda asynchronously via REST endpoint (#4257)
* feat: load agenda asynchronously via REST endpoint

* fix: handle invalid meeting number + pre-64 meetings redirect
2022-07-24 10:34:57 -05:00
Robert Sparks b988850985
fix: avoid mutables as defaults. Compute date default arguments at runtime rather than loadtime. (#4144) 2022-07-06 14:39:36 -05:00
Robert Sparks 07bfa68a75
feat: explicitly model session attendance (#4025)
* feat: add model to track session attendance

* feat: add model to track session attendance

* feat: add api to set session attendees

* fix: use user pk instead off person pk in the attended api.

* feat: calculate three of five from attended

* feat: management utility to populate Attended model history

* docs: document why nomcom calculations don't use Attended yet.

* fix: add migration to add new personalapikey endpoint to choices

* test: verify very old last login prevents api key use,

* chore: address review nits

* chore: comment on some idiosyncracies of the expected input to populate_attended

* fix: add unique_together constraint for the Attended model

* fix: correctly handle empty querysets passed to three_of_five_eligible functions.
2022-06-20 10:46:36 -05:00
rpcross 698f031b7f
feat: separate MeetingRegistration rows for each registration type. updates the registration API (#3641)
* Registration API Update

- change MeetingRegistration.reg_type field to hold only one type
- allow multiple MeetingRegistration records per person/meeting
  (one for each reg_type)

* Fix scope claims

* Add meeting 114 to MeetingRegistration migration

* fix: update stats views for MeetingRegistration model use changes

* refactor: remove unused imports
2022-06-16 15:39:34 -05:00
Robert Sparks 8373914678
fix: complete the removal of ietf.__init__.date. (#3771)
Co-authored-by: Nicolas Giard <github@ngpixel.com>
2022-03-30 18:43:51 -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
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 cf629a42ad And more fixes.
- Legacy-Id: 19877
2022-01-25 10:14:25 +00:00
Lars Eggert c68446ae93 More select2 and test fixes.
- Legacy-Id: 19781
2021-12-14 18:19:12 +00:00
Lars Eggert e9fd78128c Interim commit
- Legacy-Id: 19765
2021-12-09 18:26:53 +00:00
Kesara Rathnayake 43513ed2f5 Adds private app authentication API for bibxml. Fixes #3480. Commit ready for merge.
- Legacy-Id: 19711
2021-11-25 04:26:30 +00:00
Lars Eggert 021ba39712 Reindent all templates with djhtml
- Legacy-Id: 19610
2021-11-10 09:41:11 +00:00
Jennifer Richards 81d9234d54 Use temporary directories instead of "real" filesystem for tests. Fixes #3414. Commit ready for merge.
- Legacy-Id: 19555
2021-11-05 19:45:57 +00:00
Robert Sparks 766a4638b2 Merged in [19344] from krathnayake@ietf.org:
Implements /api/appauth/authortools API endpoint. Fixes #3396.
 - Legacy-Id: 19364
Note: SVN reference [19344] has been migrated to Git commit dc833aa85c
2021-09-18 17:07:47 +00:00
Kesara Rathnayake dc833aa85c Implements /api/appauth/authortools API endpoint. Fixes #3396. Commit ready for merge.
- Legacy-Id: 19344
2021-09-06 11:42:16 +00:00
Ryan Cross 92f2d02207 Fix /api/v2/person/person to work with Robot apikey. Commit ready for merge.
- Legacy-Id: 19101
2021-06-09 18:13:17 +00:00
Robert Sparks 3697180cc1 Reverted merge of timezone-aware migration efforts.
- Legacy-Id: 18792
2021-01-12 16:54:20 +00:00
Henrik Levkowetz 774e752a54 Snapshot of timezone-aware datatracker code. Tests pass, and the test-crawler shows only expected differences. Trunk changes merged in up to r18768.
- Legacy-Id: 18770
2020-12-16 23:53:37 +00:00
Henrik Levkowetz ca79c61950 Added a 'dumptime' entry to the JSON return from /api/version, in order to be able to make sure that running 'test-crawl --diff' will use database data from the same dump to avoid false page diff positives. Commit ready for merge.
- Legacy-Id: 18752
2020-12-11 17:08:53 +00:00
Henrik Levkowetz 6cd3e6c83e Added Person.personextresource_set to the information returned in the personal-information JSON blob.
- Legacy-Id: 18543
2020-10-02 12:10:33 +00:00
Henrik Levkowetz 96330c3f43 Added a missing URL pattern for /api/openid/.
- Legacy-Id: 18496
2020-09-15 10:13:11 +00:00
Henrik Levkowetz 724e982a1c Added documentation of the OpenID Connect and version endpoints to /api/. Added some tests.
- Legacy-Id: 18487
2020-09-11 14:13:45 +00:00
Henrik Levkowetz ac31ea1f5d Added a datatracker version endpoint /api/version. Fixes issue #3077.
- Legacy-Id: 18486
2020-09-11 14:11:37 +00:00
Henrik Levkowetz 95bca1dbed Updated the bluesheet submission API tests slightly, to check correct handling of updates.
- Legacy-Id: 18447
2020-08-30 19:41:55 +00:00
Henrik Levkowetz da7c22f710 Added html.escape() in a test case in order to correctly handle affiliation names with ampersands.
- Legacy-Id: 18420
2020-08-26 16:04:50 +00:00
Henrik Levkowetz 57938b039d Converted many cases of plain-text 403 messages to use a properly styled page instead, with a login link when appropriate. Also changed some API endpoint 400 responses to a more correct 403.
- Legacy-Id: 18339
2020-08-06 10:59:52 +00:00
Henrik Levkowetz d8b11c4293 Removed an unused and unnecessary API endpoint, now that gather.town has gotten OpenID Connect authentication working.
- Legacy-Id: 18190
2020-07-17 19:33:15 +00:00
Henrik Levkowetz 9910d1ecf0 Added the use of local test directories instead of default settings for bluesheet files in the bluesheet upload API test.
- Legacy-Id: 18069
2020-06-26 15:37:21 +00:00
Henrik Levkowetz 3a76e4a935 Added an API endpoint for bluesheet information upload. Factored out code in common with manual upload_session_bluesheets(). Tweaked ietf.secr.proceedings.utils.handle_upload_file() to handle temp files in addition to http file objects, to support the API endpoint.
- Legacy-Id: 18067
2020-06-26 14:49:13 +00:00
Henrik Levkowetz b332233d6f Fixed a problem with the handling of multiple registrations for the same person and meeting in api_new_meeting_registration().
- Legacy-Id: 18059
2020-06-24 20:49:13 +00:00
Henrik Levkowetz ddf874bc77 Fixed an issue in a test function that could occasionally fail incorrectly.
- Legacy-Id: 18045
2020-06-24 11:07:11 +00:00
Henrik Levkowetz 9b672fc801 The registration system creates separate records for hackathon and session registration, but in order to provide OAuth2 registration information to for instance Meetecho we want just one consolidated record. Changed the handling of notifications from the registration system to aggregate reg_type and ticket_type information in one record.
- Legacy-Id: 18011
2020-06-17 15:44:37 +00:00
Henrik Levkowetz 980de4fac0 Removed an unused import
- Legacy-Id: 17959
2020-06-10 11:32:24 +00:00
Henrik Levkowetz 6e30b36515 Expanded the test case for api_new_meeting_registration() to test both the existing and new account case, and that additional table fields are set appropriately.
- Legacy-Id: 17958
2020-06-09 21:06:09 +00:00
Henrik Levkowetz 8547432583 Updated the api_new_meeting_registration() endpoint to set all provided fields correctly. Fixes a bug that left some fields unset.
- Legacy-Id: 17957
2020-06-09 21:04:12 +00:00
Henrik Levkowetz ec5d159b4f Added a new API endpoint to be used by the registration system, to trigger account creation.
- Legacy-Id: 17941
2020-06-08 19:51:10 +00:00
Henrik Levkowetz 0ba2c93d7f Added a showapikeys management command, to be able to easily see the api keys.
- Legacy-Id: 17935
2020-06-08 19:20:27 +00:00
Henrik Levkowetz 65c919b325 Added OpenID support through django-oidc-provider, with tests using the certified python oic module.
- Legacy-Id: 17919
2020-06-06 21:01:21 +00:00
Henrik Levkowetz b9b36dc124 Tweaked the meetecho access API fallback response to use person.plain_name instead of person.name.
- Legacy-Id: 17913
2020-06-06 20:13:54 +00:00
Henrik Levkowetz 950f1822bc Refined the makeresources management command slightly to improve handling of models with names ending in 'Resource' -- tastypie requires the resource name to be explicitly set in that case.
- Legacy-Id: 17858
2020-05-20 19:38:44 +00:00
Henrik Levkowetz 0bc19f0c7c Added group chair/secretary role information to the personal meetecho key API.
- Legacy-Id: 17806
2020-05-16 15:58:40 +00:00
Henrik Levkowetz eedd48d455 Simplified the URL and view code for the personal meetecho access API endpoint, and added test code.
- Legacy-Id: 17642
2020-04-15 17:19:54 +00:00
Henrik Levkowetz e01cc95f15 Tweaked some comments
- Legacy-Id: 17632
2020-04-15 12:02:28 +00:00
Henrik Levkowetz 0db30f3ca8 Updated the API v2 JsonExporMixin to not try to use an API key argument as a queryset argument when building the json response.
- Legacy-Id: 17631
2020-04-15 12:01:52 +00:00