* 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
* 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.
* 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
* 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>
Remove "-date" from data-sort fields for all dates, so that all columns
are now much better aligned.
Note: did not find an opened issue related to this after a quick search.
* refactor: avoid using select2 data-* attrs on html elements
Using "data-ajax--url" shadows explicit configuration in our
select2.js wrapper. Use "data-select2-ajax-url" to avoid this.
Also add ability to omit the ajax setup entirely by returning
None from ajax_url().
* chore: hook up a flag to disable ajax for SearchablePersonsField
* refactor: send select2 prefetch data as array and allow config of min input length
* feat: only offer IAB/IESG members for bofreq responsible leadership
* test: area directors/IAB members should be options for bofreq responsible leaders
* test: update tests to match changes to SearchableField
* fix: clean up SearchablePersonsField breakage when searching by email address
* chore: finish incomplete comment
* fix: Don't run `striptags` on event descriptions that are emailed
Remove the `textify` filter, which is now unused.
Fixes#3600
* Update ietf_filters.py
* Update notification_email.txt
* fix: corrects the IESG evaluation record summary statement for documents where the IESG state is approved (announced or not).
* fix: corrects IESG evaluation record summary for approved docs
This is a correction to a previous fix that didn't pass all the tests
for some documents
* fix: corrects IESG evaluation record summary for approved docs
Corrects the previous fix by removing commented out code. Sigh. At least
these are free.
* feat: Add opengraph information to document pages
* Apply suggestions from code review
Co-authored-by: Mark Nottingham <mnot@mnot.net>
* Add IRTF and IAB logo and make card PNGs for all
* Use the cards and restore stuff that somehow got dropped
* Try and make Twitter use the "large image" card format
Co-authored-by: Mark Nottingham <mnot@mnot.net>
* feat: Render the document shepherd writeup templates at two new URL.
Those being `/doc/shepherdwriteuptemplate/group` and
`/doc/shepherdwriteuptemplate/individual`.
* Address review comments from @jennifer-richards
* Fixes
* Remove debug statement
* Make bleach sanitizer not strip the `start` attribute of `ol` tags
Also rearrange the code a bit
* Don't sanitize the `python_markdown` output, it destroys wanted formatting
* Restore bleach
* Don't bleach tag `id`s.
* feat: Use d3 for doc dependencies
* Interim commit
* Progress
* Progress
* Auto pan and zoom
* Arrows
* Remove graphviz and the code that uses it
* More graphviz-related changes
* Interim commit
* Move things into place
* Add test
* Final touches
* Make SVG work in Chrome
* Get the docs more similarly to how the group doc page does it
* Reindent
* Add ability to download the SVG, and use bs fonts.
* Follow @rjsparks' advice on how to compute the reference list
* Interim commit
* Add legend
* Speed up simulation
* Fix tooltips
* fix: escape a period in a new url regex
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: set vite base path during deploy build + allow google fonts
* ci: only set vite base path if build is for production release
* test: add html-validate ignore rules for vite generated content that is valid
* fix: show buttons on regular sessions without agenda materials + link to legacy agenda
* fix: temporarily hide left menu on agenda-neue and floor-plan-neue
* fix: set resize handler to whole app
* fix: apply html-validate ignore to agenda-neue only + deploy/build.sh fix
* test: change old agenda cypress to always take the same elements to avoid #3564
* fix: Add popup to explain colors for liaisons needing action
Also fix the search field styling while I'm here.
* Also fix some other field styling issues while I am here
* fix: Don't crash when urlreverse fails as part of urlize_ietf_docs
Also fix an HTMLization nit.
* Fix more corner cases found during test-crawl
* Handle "I-D.*"" reference-style matches
* Refactor use of bleach. Better Markdown linkification and formatting.
* Address review comment from @rjsparks
* fix: Update document shepherd writeup template based on community review
* Point to the new "content guidelines" page @JayDaley added
* Suggestion from Jane Coffin
* Also extend this to contributors
* Fix grammar nits
* Revise question 5 based on suggestions from @cabo
* fix: Update document shepherd writeup template based on community review
* Point to the new "content guidelines" page @JayDaley added
* Suggestion from Jane Coffin
* Also extend this to contributors
* Fix grammar nits
* Revise question 5 based on suggestions from @cabo
* Apply suggestions from code review
By @richsalz
* Update ietf/templates/doc/shepherd_writeup.txt
* Update ietf/templates/doc/shepherd_writeup.txt
* Update ietf/templates/doc/shepherd_writeup.txt
* Update ietf/templates/doc/shepherd_writeup.txt
* Apply suggestions from code review
* Question 12 from Brad
* Update ietf/templates/doc/shepherd_writeup.txt
* Rewrap
* Fix test
* feat: show session requests for all "has_meetings" groups
* test: test changes to groups whose session requests are shown
Note the change in capitalization for the 'active' group state fixes
the test but does not seem to affect production (which I guess uses
case insensitive matching?)
* test: remove leftover debug statement
* feature: exclude admin/social sessions from meeting requests view
* test: test exclusion of admin/social sessions from meeting requests view
* feat: group all non-area groups as "other" on meeting requests page
* fix: prevent doubling of first section header
* test: verify that more of the sreqs are / are not linked
* 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>
* feat: add pronouns
* fix: include migrations
* fix: correct daggers on person form.
* fix: clean pronouns
* feat: add choices to pronouns
* feat: show pronouns on public profile
* feat: add pronouns to oidc userinfo
* fix: move pronouns to new claim. Add tests.
* fix: improve html generated by new widget
* feat: use a MultiWidget for pronouns
* refactor: use two fields on Person for the two types of pronoun entry.
* chore: update copyrights
This makes (more) sure the table sort chevron doesn't wrap, by removing trailing
whitespace from table headers.
It also fixes various whitespace nits related to buttonlists.
* fix: Fix some HTML validation errors that came in via #4035
Also make validation errors display a bit better.
* content -> color for mask-icon (caught by @jennifer-richards; thanks)
* chore: Replace flot with highcharts
Since flot hasn't been updated since 2014 and was only used in one
place. Simplify how highcharts is initialized and used, and re-enable
pre-bs5 export functionality.
* Fix tests
* Remove some console.log statements
* feat: Switch to SVG logo; use it (and new bitmaps) in more places
* Run images through image_optim
* Copy icons from base template
* Tint icons red when in dev mode
* fix: Make AD position colors more noticeable
Also remove the striping of the table, which makes it easier to notice which
documents are missing a ballot.
* Make "yes" a bit darker
* Stripe the table for non-ADs
* 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.
* fix: Avoid numeric IDs on NomCom pages
* fix: Correctly group last names with lowercase/i18n parts
* Remove some unneeded CSS
* fix: Remove extra div closing tag
* fix: import moment.js library with moment-timezone support in wrapper
Packaging changes broke the mechanism used to make moment.tz available
to javascript code. This eliminates the separate moment.js and
moment-timezone-with-data-10-year-range.js wrappers and instead
imports the timezone-augmented version directly. This provides both
the timezone support and the regular moment features.
* refactor: put moment on window instead of global for consistency
* Unicode messages are triggered by both db content and tests
* Make ids unique
* Avoid "No value found" message on page
* Strip HTML from history entries, it's often broken
* Check HTML sources for occurrences of "** No value found for" and fix them
* Fix another occurrence of "** No value found for"
* Fix more occurrences of "** No value found for"
* Fix document revision stripping
* Force breaks of long (garbage) words
* Check URL validity before urlizing them
* Handle some additional corner cases
* Linkify action items
* Don't create profile/email links for System
* Handle headings with HTML elements in them better
* Fix comment
* Fix another occurrence of "** No value found for"
* Better I-D URLization that handles more edge cases. Also, test for them.
* Remove print
* Handle charters better
* Cache for one day
* 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
* feat: Make the "report a bug" links more visible
Also rework the page footer somewhat, while we're here.
* Revert empty change
Co-authored-by: Nicolas Giard <github@ngpixel.com>