Commit graph

14255 commits

Author SHA1 Message Date
Jennifer Richards 32054111df
fix: fix failing tests and eliminate naive datetime warnings (#4402)
* test: fix timestamp construction in several doc tests

* refactor: rename date2datetime to datetime_from_date and clarify code

* chore: helper to get tzinfo for PRODUCTION_TIMEZONE

* fix: fix timezone handling in make_last_call()

* test: fix datetime generation in doc.tests_charter

* refactor: remove PRODUCTION_TIMEZONE setting

Replaces the PRODUCTION_TIMEZONE setting with a constant,
DEADLINE_TZINFO, in ietf.utils.timezone.

* test: be more careful about timezone in tests_charter.py

* test: be more careful about timezone in doc/tests.py

* fix: fix timezone handling affecting doc.tests_draft

* fix: fix timezone handling affecting tests_irsg_ballot.py

* fix: fix timezone handling affecting tests_review.py

* fix: fix timezone handling affecting last ietf.doc tests

* fix: fix timezone handling affecting last ietf.group tests

* fix: fix timezone handling affecting ietf.iesg tests

* fix: handle timezones in get_8989_eligibility_querysets

* fix: handle timezones affecting ietfauth tests

* fix: return tz-aware datetime from utc_from_string

* fix: specify timezone for constants in ipr_rfc_number()

* fix: specify tz for ipr deadlines

* fix: handle timezones affecting liaisons tests

* fix: treat leap day in get_8989_eligibility_querysets()

Manual cherry-pick of 248d6474

* test: treat leap day properly in nomcom tests

* fix: fix timezone handling affecting nomcom tests

* test: fix timezone handling in review tests

* fix: fix timezone handling affecting secr.meetings tests

* fix: handle both pytz and zoneinfo timezones in ietf.utils.timezone

* fix: fix timezone handling affecting secr.proceedings tests

* refactor: use make_aware() helper in secr.meetings tests

* test: fix timezone handling in secr.telechat tests

* fix: fix timezone handling affecting stats tests

* fix: eliminate tz-naive helpers affecting sync email parsing

* fix: include timezone data when serializing DeletedEvent data

* fix: fix timezone handling affecting sync tests

* style: remove unused import
2022-09-01 13:07:28 -03:00
Robert Sparks a4ecccb061
fix: pytz manipulation of dumptime
* fix: pytz manipulation of dumptime

* fix: use pytz correctly. Add test for api/version dumpinfo time.

* fix: actually use pytz correctly
2022-09-01 12:31:06 -03:00
Robert Sparks 7ea3e18705
fix: move check and migrate to prepare.js for diff/cli builds. (#4398) 2022-08-31 17:14:42 -03:00
Robert Sparks 4bcf896fef
fix: manage initial container migration more carefully. (#4396) 2022-08-31 16:22:24 -03:00
Robert Sparks f7f0ca99d3
fix: don't migrate dumpinfo. automate migrations and setting USE_TZ. (#4389)
* fix: don't migrate dumpinfo - it's already in UTC.

* chore: leave mode bits alone

* fix: migrate the container db, automating setting USE_TZ.
2022-08-31 12:38:48 -03:00
Jennifer Richards c2c17cfeb1
chore: enforce USE_TZ setting expectations in migrations (#4386)
* chore: enforce USE_TZ setting expectations in migrations

* chore: keep USE_TZ=False until changed manually
2022-08-30 12:10:59 -03:00
Jennifer Richards 8b52d27b02
refactor: refactor timestamp handling so tests in meeting app pass (#4371)
* 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
2022-08-26 16:53:19 -03:00
Jennifer Richards 42203d7a9c
chore: migrate timestamps for use with USE_TZ=True (#4370)
* 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()
2022-08-26 13:03:19 -03:00
Jennifer Richards ebebdbed3e
refactor: replace datetime.now and datetime.today with timezone.now (#4211)
* 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
2022-08-25 13:45:16 -03:00
Ryan Cross a94a87f336
fix: remove test so all deleted or swapped (onsite<->remote) registrations get removed from MeetingRegistrations (#4359) 2022-08-25 10:00:04 -05:00
Nicolas Giard 41ae0cfac1
ci: update baseline coverage on build + new file URL (#4365) 2022-08-25 09:58:16 -05:00
Lars Eggert 6d585d2f4e
Fix BCP79 reference (#4369)
Fixes #4367
2022-08-25 09:43:04 -05:00
Robert Sparks e1bb3e057e
doc: update INSTALL to reflect needed roles for each step (#4363) 2022-08-24 13:03:31 -05:00
Jennifer Richards a3f2d4bdc0
chore: run checks using celery UID/GID in container (#4364)
* chore: run checks as celery uid/gid in celery container

* chore: add init flag to suggested beat container config
2022-08-24 13:00:01 -05:00
Jennifer Richards 727feabfff
chore: create stale submission cleanup task and other deployment tweaks (#4358)
* 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
2022-08-24 12:29:48 -05:00
Robert Sparks bd6d19efff
fix: replum settings so that production app configuration can be configured in settings_local (#4361) 2022-08-24 12:22:47 -05:00
Jennifer Richards bacd54477b
ci: fix filename of MQ broker workflow YAML (#4354) 2022-08-22 15:28:58 -05:00
Jennifer Richards 280629e061
ci: fix repo used for container builds (#4353)
* doc: change /a/docker/datatracker-cel to .../datatracker

* ci: remove debug repo from build workflows
2022-08-22 15:18:04 -05:00
Jennifer Richards e319a909b3
chore: suppress deprecation warning for urllib3[secure] extra (#4352) 2022-08-22 13:30:15 -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 1dab3b1086
fix: use django 2.2 makemigrations --check (#4351) 2022-08-22 12:37:04 -05:00
Robert Sparks b8aa52f33a
fix: run migrations before looking for missing ones while bulding (#4350) 2022-08-22 11:15:45 -05:00
Robert Sparks 17786527d4
fix: allow 90m session requests. Prompt for cannot meet at time reasoning. (#4345)
* fix: allow 90m session requests. Prompt for cannot meet at time reasoning.

* test: adjust tests to match new acts_like_wg default.
2022-08-19 09:11:44 -05:00
Nicolas Giard 822a572589
feat: diff crawl docker tool (#4310)
* feat: diff docker tool (wip)

* feat: diff docker tool - download + extract from github

* feat: diff docker tool - pull + create + shutdown containers

* feat: diff docker tool - start app containers + execute prepare script

* fix: many fixes + run target instance server

* feat: diff docker tool - run crawl + options

* fix: diff docker tool - various fixes

* feat: diff docker tool - add tag + commit fetch options

* feat: diff docker tool - handle log save + more options

* feat: diff docker tool - F10 quit option + better exec display + checklist fixes

* fix: diff docker tool - remove latest release option
2022-08-18 12:28:47 -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
Robert Sparks c0f1fd2395
chore: update to pytz 2022.2.1 (#4342) 2022-08-18 11:40:51 -05:00
Robert Sparks 3532a4f28b
test: migrate db before checking for missing migrations. (#4341) 2022-08-18 10:08:31 -05:00
Robert Sparks aa2f843725
chore: track updates to pytz (#4319) 2022-08-12 15:14:46 -05:00
Robert Sparks 0f703a695e
fix: correctly render wg shepherd writeups and test it. (#4316) 2022-08-11 16:21:52 -05:00
Robert Sparks 6a4142e3d0
feat: Area director workload summary view (#4315)
* 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>
2022-08-11 15:24:29 -05:00
Robert Sparks 8604740bf0
fix: reparse last month of rfc-index every 15m until we improve the API for new RFCs (#4314) 2022-08-11 14:20:31 -05:00
Robert Sparks c7c366fd41
chore: remove session_purpose_demo mgmt command. Fixes #4290. (#4309) 2022-08-04 11:25:57 -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
Robert Sparks c95679a03b
test: align tests with code changes from #4297. (#4307) 2022-08-02 16:08:30 -05:00
Lars Eggert beab785903
fix: Remove unicode encode from CVS row writer (#4294)
Fixes #4292
2022-08-02 10:23:53 -05:00
Robert Sparks 1b64231e98
test: Convert interleaved migration failure to a warning. (#4301) 2022-08-02 10:23:12 -05:00
Lars Eggert 73931c2ed7
fix: Move Meetecho buttons to separate button group (#4295)
Fixes #4288
2022-08-02 10:20:26 -05:00
Lars Eggert cdb4769a73
fix: Don't require a responsible AD to be identified for new status change (#4297)
Fixes #4159
2022-08-01 09:51:09 -05:00
Lars Eggert 58b4649aef
fix: Show Zulip room URL (#4296). Fixes #4269 2022-07-29 15:42:07 -05:00
Lars Eggert d3d75c1a8c
fix: Show all available formats for archived I-Ds (#4298). Fixes #3881 2022-07-29 15:39:45 -05:00
Robert Sparks f5df294574
feat: add ability to skip html validation to test crawler. (#4299) 2022-07-29 15:37:24 -05:00
Nicolas Giard 35106c10a4
ci: fix db import file permission 2022-07-28 17:38:56 -04:00
Nicolas Giard 52b51e4962
ci: fix db container 2022-07-28 17:35:26 -04:00
Nicolas Giard 8ea4ad4de2
ci: fix mariadb service start command in db container 2022-07-28 16:56:23 -04:00
Nicolas Giard c8ce8cab90
ci: remove mariadb service stop from import stage in db container 2022-07-28 16:52:25 -04:00
Nicolas Giard aa4af6d9e5
ci: use ubuntu:focal for db build 2022-07-28 14:54:48 -04:00
Robert Sparks 23fc0ea44a
fix: add new search rule to correct group community lists (#4291) 2022-07-28 09:13:29 -05:00
Nicolas Giard 2c522ee169
fix: use white ietf text logo in header (#4283) 2022-07-27 15:43:06 -05:00
Nicolas Giard e0e663f964
fix: agenda - rename Video Stream tooltip to Full Client with Video (#4287) 2022-07-27 09:36:28 -05:00
Nicolas Giard ecd0edb0e2
ci: fix nightly db workflow to use ubuntu jammy 2022-07-26 17:39:58 -04:00