* chore: rename create_dummy_meeting to create_test_meeting
* chore: reword comments to match renamed command
* chore: rename make_dummy_nomcom to create_test_nomcom
Avoids non-inclusive language and better matches other command naming.
* chore: reword comments to match renamed command
* fix: handle rooms with capacity = None in schedule editor
* fix: sort higher capacity rooms ahead of lower
Sort was incorrect, this matches intent and comments.
* test: avoid local times near midnight for test_past_swap_days_buttons()
* test: use timezone_options variable consistently
* test: add test of timezone_not_near_midnight() method
* fix: ensure that timezone_not_near_midnight() always exits
* fix: render upcoming.ics timestamps correctly
Both correctly display timestamps in the claimed time zones and format
the date-times in correct iCalendar format.
* refactor: also render DTSTAMP using ics_date_time tag
* fix: render valid date-times in agenda.ics
* fix: render valid date-time in important_dates_for_meeting.ics
Only touching the DTSTAMP here. The DTSTART has VALUE=DATE so the tag
does not handle it.
* test: test ics_date_time tag
* fix: Don't say that IESG processing has started
Fixes#4286
* Update ietf/doc/views_draft.py
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* Update ietf/doc/views_draft.py
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: remove help/personal-information and the prompt-for-consent email management command.
* fix: remove gdpr treatment except for consent checkbox. Rename Submit.
* fix: drom the consent column from Person and Person.History
* fix: remove the consent boolean. Reorganize the account info form.
* chore: reorder migrations
* fix: correct meeting attendance calculations
* test: change meetingregistration factory defaults
* test: Setup stats tests to verify counts honor meeting.Attended
But the tests aren't actually looking to see what numbers get generated yet.
* test: add test for attendance cross-talk between meetings
* fix: limit attendance count query to single meeting
* refactor: rename attendance.online to .remote
* fix: only count a given person as onsite or remote, but never both
* test: align tests with cleanup
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* feat: apis for attaching chatlogs and polls to session materials
* fix: anticipate becoming tzaware, and improve guard against attempts to provide docs for sessions that have no official timeslot assignment.
* fix: get chatlog upload to actually work
Modifications to several initial implementation decisions.
Updates to the fixtures.
* fix: test polls upload
Refactored test to reduce duplicate code
* fix: allow api keys to be created for the new endpoints
* feat: add ability to view chatlog and polls documents. Show links in session materials.
* fix: commit new template
* fix: typo in migration signatures
* feat: add main doc page handling for polls. Improve tests.
* feat: chat log vue component + embedded vue loader
* feat: render polls using Vue
* fix: address pug syntax review comments from Nick.
* fix: repair remaining mention of chat log from copymunging
* fix: use double-quotes in html attributes
* fix: provide missing choices update migration
* test: silence html validator empty attr warnings
* test: fix test_runner config
* fix: locate session when looking at a dochistory object for polls or chatlog
Co-authored-by: Nicolas Giard <github@ngpixel.com>
* feat: add propose/upload slides button to session details modal
* refactor: remove unneeded chaining operator
* test: fix quotes around template string
* feat: link to meeting materials page from AgendaDetailsModal
* refactor: compute session details URL in JS instead of view
* chore: restyle materials page link
* test: fix test case to match changes to session modal
* fix: work around dataTransfer.getData limitation in agenda editor
* refactor: be slightly more careful checking dataTransfer type
* chore: remove debug statement
* chore: rename utility functions to reflect rfc guiding them
* feat: include new checkedin flag in nomcom calculations
* fix: reflect history a bit more accurately.
* fix: address review comment on readability
* fix: finish what c44000d started
* fix: include IRTF and BoF groups on meeting requests page
* test: test bof/irtf groups on the meeting requests page
* chore: remove some accidentally committed changes
* style: improve formatting of requests.html template
Unix timestamp is defined to be UTC and fromtimetamp correctly turns
it into whatever timezone you request. In most cases, just need to
specify *something* to avoid creating naive datetimes.
* fix: use meeting timezone for agenda_by_(room|type)
* refactor: use timezone.override instead of timezone.activate/deactivate
* fix: add timezone info in create-charter-newrevisiondocevents
* fix: use meeting timezone for recording.html template
* fix: use meeting timezone for slide submission timeslot display
* fix: use meeting timezone for schedule diff template
* fix: use meeting timezone for edit_meeting_timeslots_and_misc_sessions
* fix: use meeting timezone for materials() view
* fix: use meeting timezone for proceedings() view
* refactor: force timestamps to utc in important_dates_for_meeting.ics
Has no effect now, but guarantees consistency with template's assertion
that its timestamps are in UTC.
* fix: use meeting timezone for a couple interim meeting templates
* fix: use meeting timezone for propose_session_slides template
* fix: use meeting timezone for upload_session_*.html
* fix: use meeting timezone for a couple session templates
* feat: use hmac, sha256, and a better secret for published nomcom hashes.
* fix: avoid using django secret key for a different secret context
* fix: Only strip the newline
* fix: improve readability by using rstrip
* fix: use meeting timezone for date comparison in agenda.html
* fix: use meeting timezone in interim_meeting_cancellation_notice.txt
* fix: use meeting timezone in interim_session_cancellation_notice.txt
* fix: use meeting timezone for secr misc sessions tab
* fix: use meeting tz for editing misc sessions
* fix: handle times with day outside usual choices in secr app
* fix: handle TZ correctly for reg sessions and timeslots in secr app
* fix: handle timezone in session_schedule_notification.txt
* fix: fix broken references in interim session cancellation template
* test: use meeting timezone as element id for meeting/timeslot editing
* fix: return same bibxml for versioned and versionless references
Fixes#4384.
Refactors bibxml production to remove repeated logic.
Abandons the half-implemented idea that returning information
from the Submission object might be better than the Document or
DocHistory objects.
* fix: test for None with `is not` and simplify choice from multiple qs objects
Addresses review comments.
* fix: replace inline JS for "Add another" on secr rooms page
* fix: update rolodex edit page to re-enable "Add another" button
* refactor: use new class instead of reusing inline-related
The "inline-related" class has styling rules, etc. To avoid accidental
styling changes, use "dynamic-inline" as a class to indicate which tr
elements should be managed.
* refactor: accept tz name strings in ietf.utils.timezone methods
* refactor: use explicitly tz-aware math for iana-changes-updates script
* chore: remove unused "local_timezone_to_utc()" method helper
* feat: Add column sums to /doc/ad dashboard
* Tweak template a bit
* Add trend indicators when logged in as AD
* Shorten column headings more; put full heading into tooltip
* Fix trend colors; add table dividers
* Add note about trend indicators
* Wording fix
* Show which docs make up the delta if there is a trend change
* Fix missing stats
* More space before headings
* Better popover formatting
* Make popover trigger clickable, and add links to docs in the delta
* Improve trends
* Fix tests and shorten headers
* Add button to IESG dashboard to AD dashboards.
* fix: use tz-aware calculations for ad_workload view
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: use PST8PDT for published_rfc event timestamps
* fix: find RFCs by PST8PDT year in RfcFeed
* refactor: add const RPC_TZINFO to represent RFC publication timezone
* chore: remove (rather than fix) unused template tags
* fix: always return RPC_TZINFO-local date from Document.pub_date()
* refactor: convert 'published' flag to a Boolean to reflect its usage
* fix: display doc publication dates in correct time zones
* fix: fix various small issues breaking tests
* refactor: replace datetime.now with timezone.now
* refactor: migrate model fields to use timezone.now as default
* refactor: replace datetime.today with timezone.now
datetime.datetime.today() is equivalent to datetime.datetime.now(); both
return a naive datetime with the current local time.
* refactor: rephrase datetime.now(tz) as timezone.now().astimezone(tz)
This is effectively the same, but is less likely to encourage accidental
use of naive datetimes.
* refactor: revert datetime.today() change to old migrations
* refactor: change a missed datetime.now to timezone.now
* chore: renumber timezone_now migration
* chore: add migration to change timestamps to UTC
* refactor: move tz instantiation/caching from TimeSlot to Meeting
* fix: assume utc if meeting.time_zone is blank
* chore: make datetime.combine() calls tz aware in the meeting app
* ci: correctly use meeting.tz in TimeSlotFactory
* chore: compute TimeSlot utc / local times assuming tz-aware times
* chore: use tzaware math for agenda editor timeslot layout
* chore: fill in Meeting.time_zone where it is blank
Nearly all interim meetings on or before 2016-07-01 have blank
time_zone values. This migration fills these in with PST8PDT.
* chore: disallow blank Meeting.time_zone value
* refactor: no need to handle blank time_zone case in TZ migration
* refactor: remove now-unnecessary checks that meeting has time_zone
* chore: fix timezone handling in agenda.ics and Meeting.updated()
* chore: fix tz handling in interim_request_details, exercise in tests
* chore: fix timezone handling for test_interim_send_announcement
* chore: fix timezone handling in agenda_json()
* chore: fix timezone handling in old agenda
* chore: fix timezone handling for EditTimeslotsTests
* refactor: refactor a few fixes for more consistent timezone handling
* chore: add timezone info to timestamps in fixtures
* chore: remove naive datetime warnings found in meetings.tests_views
* chore: fix a few more test failures in meetings.tests_views
All tests in meetings.tests_views now passing
* chore: remove unused import
* chore: fix timezone handling in test_schedule_generator.py
* chore: fix timezone handling affecting meeting.tests_js
* chore: fix timeslot test bug when local date != UTC date
* test: fix a few failing tests, all meetings tests now pass
(for me, anyway)
* chore: renumber migrations
* chore: update timestamp conversion migration
The django-celery-beat package introduces tables with timestamp
columns. These columns are stored in CELERY_TIMEZONE. Because we run with
this set to UTC, the migration ignores these columns.
* chore: fix pytz-related change in migration
* chore: remove duplicate migrations
* chore: remove CELERY_BEAT_TZ_AWARE setting now that USE_TZ is True
* test: avoid failure in test with bogus timezone
* Pass settings into the context
Fixes#4340
* fix: test changes to the ipr notification message content
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* chore: add migration to change timestamps to UTC
* chore: fill in Meeting.time_zone where it is blank
Nearly all interim meetings on or before 2016-07-01 have blank
time_zone values. This migration fills these in with PST8PDT.
* chore: disallow blank Meeting.time_zone value
* refactor: no need to handle blank time_zone case in TZ migration
* refactor: remove now-unnecessary checks that meeting has time_zone
* chore: renumber migrations
* chore: update timestamp conversion migration
The django-celery-beat package introduces tables with timestamp
columns. These columns are stored in CELERY_TIMEZONE. Because we run with
this set to UTC, the migration ignores these columns.
* chore: fix pytz-related change in migration
* chore: be explicit that Meeting.vtimezone can return None
* refactor: remove unnecessary save()
* refactor: replace datetime.now with timezone.now
* refactor: migrate model fields to use timezone.now as default
* refactor: replace datetime.today with timezone.now
datetime.datetime.today() is equivalent to datetime.datetime.now(); both
return a naive datetime with the current local time.
* refactor: rephrase datetime.now(tz) as timezone.now().astimezone(tz)
This is effectively the same, but is less likely to encourage accidental
use of naive datetimes.
* refactor: revert datetime.today() change to old migrations
* refactor: change a missed datetime.now to timezone.now
* chore: renumber timezone_now migration
* chore: renumber migrations
* chore: disable beat container for dev
* chore: use init option with celery container
* chore: create cancel_stale_submissions task via migration
* chore: revert accidental change included in last commit
* chore: terminate celery docker-init.sh on failed command
* 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>
* feat: Add new page as requested in #4242 to list all area directors
and their current workload. Include links to the specific dashboards
for each area director. This new page is in doc/ad/.
* feat: Add new page as requested in #4242 to list all area directors
and their current workload. Include links to the specific dashboards
for each area director. This new page is in doc/ad/.
* Fixed issues from the previous commit by renaming hash to get_hash.
* Making outer () to be non matching
* Fixed RFC Ed Queue Internet-Draft to RFC Ed Queue
* refactor: split the /ad view apart from the /ad/name view.
* fix: make the new template html valid.
* test: start building a test for the new view
* refactor: make the view testable and test it.
* chore: remove unneeded commented lines
* fix: avoid parenthsized-string-looks-like-tuple bug.
* fix: repair bad closing tag in template
Co-authored-by: Tero Kivinen <kivinen@iki.fi>