* refactor: Remove all existing migrations
* refactor: Create clean set of migrations
* chore: Skip check_statetype_slugs when DB is not yet populated
* fix: Do not cache active_groups_menu on module import
* fix: Do not patch timezone awareness out of oidc-provider
* refactor: Migrate to create postgres schema, only use pgloader for data
* ci: Use migration scripts from feat/pg-migrations branch
* Revert "ci: Use migration scripts from feat/pg-migrations branch"
This reverts commit c82f64c614241ccede4865a50d494725c8a47c15.
* ci: Run check before migrate
* fix: Remove redundant migration caused by merge error
* chore: Add casts/ALTER TABLEs to eliminate pgloader errors/warnings
* chore: Change schema name to match docker image assumptions
* chore: Clear out schema so we get a clean start in case of a retry
This change allows password reset with any email address associated with the
account.
The password reset will only be sent to the active email addresses associated
with the account.
Fixes#5057
* fix(doc): Use text badges for email status
BI's envelope icons with status icons are difficult to read.
Use text labels instead (keeping the same tooltip).
Fixes#3855.
* test(doc): Fix failing ballot message tests
Some ballot message changes have been modified to correctly identify
what type of document this ballot is for.
Works on #3855
* test(doc): Remove debugging statement
Accidental inclusion of debug statement.
Works on #3855
When generating the NomCom volunteer paths, use a plus sign rather
than a comma, so that the output is more CSV-friendly.
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* test: More carefully test event syntax in ical file
* test: Test agenda.ics view with all meeting sessions
* fix: Render complete iCalendar event when show_location is False
* chore: Fix confusing comment
* chore: Add absent iesg 0001_initial.py migration
* chore: Remove index from 0001_initial.py to match production db schema
* chore: Add migration to create index on TelechatDate.date
* chore: Add __init__.py to ietf/iesg/migrations/
* chore: Add type annotation to satisfy linter
* refactor: remove import_audio_files() and related code
* refactor: move functions from proc_utils to meeting/utils
* refactor: remove secr/proceedings
* fix: Let csv.writer handle encoding for agenda_csv view
* style: Use 'is None' instead of '== None'
* feat: Display times in meeting time for agenda.csv
* feat: Provide agenda-utc.csv view
* test: Test agenda.csv time zone and agenda-utc.csv endpoint
* style: Clean up get_meeting() signature and code style
* chore: Remove unused parameter from agenda_ical() view's signature
* fix: Only consider ietf meetings as "next" in agenda_ical
* fix: Only consider ietf meetings as "next" in agenda_json
* test: Test agenda_json "next meeting" and clean up agenda_ical test
* style: Reformat new tests using Black style
* fix: Format times in display timezone in agenda.txt template
* chore: Remove unused and non-timezone-friendly TimeSlot.time_desc()
* feat: Dispatch agenda-utc.txt URL
* refactor: Use None to indicate lack of utc parameter to view
* feat: Show display timezone in agenda.txt template
* refactor: Combine URL regexes for the agenda.txt to a single entry
* test: Update tests for agenda.txt/agenda-csv.txt
* fix: Remove ':' added to time formats in agenda.txt template
* feat: move IETF Activity reports from external text based to HTML pages
* fix: use date_today(), fix fencepost problem
* fix: use is_meeting_report template variable instead of is_monthly_report
* feat: Prefill the abstract, shepherd and AD info into a ballot writeup
* Suggestions from @rjsparks
* Remove instructions to add IANA Expert template.
* Make "notes" fields for various bodies conditioned on the doc stream
* fix: connect the menu item for the editoral stream to the rswg documents page.
* chore: repair merge damage
* fix: address review by shortcircuiting redirects
* fix: Use more robust filename/rev matching for meeting materials
* chore: Remove debug statement
* test: Update test to catch bug fixed by this PR
* fix: Be more discerning when parsing revision
* test: Update test to exercise revision parsing/validation
* style: Apply Black styling to replaced code
* feat: Add group stats sunburst plots to active WG page
* Cleanups
* Sort/color areas consistently
* Move graphs to area page
* Move sunbursts
* Add test
* Move most sunbursts to modals
* Remove parametrization from URLs
* Fix test
* Make `only_active` a bool
* Reformat
* Reformat more
* feat: Add remote_instructions for sessions to agenda.ics
* feat: Add webex/meetecho/remote_instructions to upcoming.ics
* fix: Remove location-based details from interims in upcoming.ics
Interim sessions don't ever seem to have locations, so they won't use
the new code anyway. Leave in the remote-instructions.
* test: Test inclusion/exclusion of remote_instructions in upcoming.ics
* test: Test inclusion/exclusion of remote_instructions in agenda.ics
* feat: Include onsite tool link in agenda.ics
* test: Test inclusion of meetecho onsite and remote URLs in agenda.ics
* fix: Don't show replaced, expired or otherwise abandoned docs for AD
Fixes#5153 and #2889.
* Fix filter conditions
* Update ietf/doc/views_search.py
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: Prevent ADs and chairs from added to `bethere` constraint
Fixes#5163 and #3890
* Fix tests and change from "people" to "participants", to hopefully make it
clearer it's not ADs and chairs.
* Rewrap
* Update ietf/secr/sreq/forms.py
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: Use case insensitive match for group acronym in doc search
* fix: Use case insensitive match for doc.search_by_name view
* fix: Use case insensitive match for doc names in ipr.search view
* test: Test case insensitivity in doc search/search_for_name
* feat: insensitive username matching at django authentication
* feat: use iexact when using the User object manager
* fix: more places to ignore username case
* fix: remove unused management command
* fix: avoid get when probing for object existance
* fix: force lowercase new usernames in secr/rolodex
* fix: use explicit arguments when creating user
* fix: Return to the expected schedule after editing session dteails
* style: Avoid confusing nested double-quotes in html template
* feat: When possible, add "back to agenda" button to edit_timeslots
* chore: Propagate 'sched' to links/includes in timeslot_edit.html
* chore: Propagate 'sched' to links/includes in edit_timeslot() view
* chore: Propagate 'sched' to links/includes in create_timeslot() view
* test: Test sched param propagation in timeslot edit views
* test: Test sched param propagation in session edit view
* test: Fix URL in test_edit_meeting_schedule
* fix: Also extract document names from XML seriesInfo attributes
The old code only looked in the anchor string for the document names of
references, which doesn't work if the anchor uses a mnemonic. This caused lots
of missed references for many documents.
* No need to import lxml anymore
* Add tests
* Handle xinclude to bibxml URLs
* Wrap line
* Apply suggestion from @rjsparks
* Undo erroneous additions
* Address suggestion from @rjsparks
* fix: `add_links_in_new_revision_events` wasn't doing anything, remove
Whatever `add_links_in_new_revision_events` was supposed to do, it didn't do it.
The linkification of things has been happening via the `format_history_text`
template tag.
* Remove import
* fix: Need to linkify during Markdown rendering
* Don't depend on mdx_linkify
* Also linkify IETF docs as part of the Markdown conversion
* Add test case
* Disable automatic links via angle brackets for email addresses
* Inline the markdown test files
* chore: Remove unused template parameter from {%include%}
* feat: Add "Meeting tools" section to group session details panel
* feat: Use better label for recordings section after session has ended
* feat: Define template tag to store timezone.now in the render context
* fix: Use get_now tag in session_buttons_include.html
* fix: Update session_details_panel.html to use get_now tag
* refactor: Inject timezone_now from a context processor instead of tag
* chore: Remove unused imports
* chore: Remove unused {%load%}
* chore: Revert renaming of dateformat.py
* feat: Add agenda_note to the SessionDetailsForm
* fix: Add hidden agenda_note field to session_details_form.html
* fix: Stop using agenda_note to filter sessions in import_audio_files()
* chore: Migrate sessions with agenda_note='CANCELED' to canceled state
* fix: Use session name instead of timeslot name on agenda
* test: Fix failing playwright test
* test: Test name/slotName values from agenda_extract_schedule()
* chore: Migrate sessions to use timeslot names for IETF meetings
Documents like
https://datatracker.ietf.org/doc/html/draft-ietf-ohai-ohttp-06 use a
tagging scheme for certain keywords that turns them into links. This
can be useful in giving people the ability to quickly jump to the
definition of an important term, but it tends to produce a lot of visual
noise. The resulting links are blue and underlined, which can be
distracting when there are lots of these links.
This change removes styling for these links. If there is an `<iref>`
tag (which renders as an empty `<span>`) immediately preceding a link
and that link is tagged `class="internal"`, link styling is removed.
These will still result in the cursor changing to a pointer, but the
blue and underlining will reduce line noise.
Note that this change depends on a corresponding change in kramdown-rfc
that reorders the generation of the iref and xref tags. The above
document will not change in appearance as a result, because that version
of kramdown-rfc generated the tags in the wrong order. A new version
generated with an updated kramdown-rfc is forthcoming.
* fix: Only send password reset email to known, active addresses
Limits password reset to Users with a Person and at least one active
address on file. Avoids the possibility of sending a password reset to
a spoofed address as in CVE-2019-19844.
* test: Use factory instead of explicit construction
* test: Test that a User with no Person cannot reset password
* fix: Fix handling of User.person field when it's null
* test: Test that reset emails are sent to known, active addresses
* feat: enable editorial stream adoption and balloting
* fix: bring tests into line with refactor
* feat: force intended_std_level to Informational when adopting into a non-ietf stream.
* fix: improve blocking position labels and email content
* fix: simplify pointer to group on doc main page for rswg docs
* fix: recover from merge typos
* fix: correct defer and clear ballot behavior
* fix: improve publication request access logic
* fix: clean up broken editorial state
* fix: adjust test to match migrations
* fix: Show links for more session types on the agenda
* test: Update test to expect buttons on additional sessions
* test: Update the past meeting test case also
* refactor: Simplify tests and comply with StandardJS style
Use === instead of ==, except where it's used to match both null and
undefined.
* style: further tweaks
* refactor: Update call to deprecated add_event_info_to_session_qs
* feat: Gather proceedings sessions in the view, grouped by name
* feat: Begin using new session data format in templates (WIP)
* feat: Show non-meeting groups (WIP)
Non-meeting groups (all sessions are notmeet) now show up on the proceedings.
Session materials associated with these groups are not shown, need to restore
that functionality.
* refactor: Rework template data, show materials for notmeet groups (WIP)
* fix: Restore "No agenda", etc, when meeting materials are not present
* chore: Remove commented out old code
* fix: Restore contents in non-area sections of proceedings
* chore: Remove commented-out stale code
* fix: Suppress duplicate agendas for a group on proceedings
* refactor: Generalize agenda deduplication and apply to minutes
* refactor: Format multiple items per session; apply to bluesheets
* refactor: Apply _format_materials to recordings, slides, and drafts
* chore: Add comment about limitations of test_proceedings() test
* test: Test separation of named sessions in the proceedings
* Limit the width of the document selectors to the width of the parent.
It's unfortunately not responsive (select2 limitation), but better
than being too long.
* Force "text-overflow: ellipsis" to hide the beginning of a doc name
* fix: Let charter revisions be variable length in the version paginator
Fixes#4988
* Address review comments. Also make major charter revisions bold for readability.
* fix: test on postgres. post and check intended pks.
* fix: pass and check intended pks
* fix: pass intended pk
* fix: get an actually usable group type for test
* fix: use a review assignment pk instead of the review request pk
* fix: Use pks of sessions, not schedtimesessassignments
* fix: test for actual pk and do not rely on case-insensitive LIKE
* fix: test for actual pk
* chore: spelling correction: nomine -> nominee
* chore: Remove commented-out template content
* fix: Correctly number newly added draft_form inputs on IPR edit form
* fix: Initialize select2 when adding a new field instance
* refactor: move session/timeslot selection for sched editor to querysets
Purpose here is to make it easier to reuse the session and timeslot selection
logic between the schedule editor and the schedule generator. Additionally
resolves a todo-list item to unify the list of TimeSlotType ids in the
IGNORE_TIMESLOT_TYPES tuple and the SessionQuerySet.requests() method.
* refactor: use new helpers to select sessions/slots for sched generator
* refactor: eliminate some code lint
* feat: Split sched gen TimeSlot into scheduled/unscheduled variants
(work in progress)
* feat: First pass at supporting unscheduled timeslots
(work in progress)
* feat: Handle unscheduled timeslots in make_capacity_adjustments()
(work in progress)
* feat: Handle unscheduled timeslots in time-relation constraint check
(work in progress)
* feat: Reflect unsched timeslots in messages from by schedule generator
* fix: Prevent exception in pretty_print() if base schedule not assigned
* refactor: Avoid flood of time relation constraint warning messages
* test: update test_too_many_sessions
* fix: Use the doc name matched by fuzzy_find_documents when rendering
Fixes#4855
* Follow suggestion by @rjsparks
* fix: handle names with endings that might parse as versions better
Co-authored-by: Lars Eggert <lars@eggert.org>
* fix: Fix layout issue in ballot modals on narrow screens
Fixes#4902
* Also apply change to old positions
* Fix tests
* Use badge to indicate former ADs
* feat: Diff arbitrary versions from new HTMLization page
Fixes#4859
* Rework this based on @rjsparks' suggestion. Not quite done yet.
* Progress
* Fix HTML
* Don't show compare buttons if there aren't at least two versions
* Remove spurious title attribute
* Use and style select2 for the version diff dropdowns
* Roll in code review suggestions
* Some tests!
* refactor: add guards/type hints to build_file_urls()
* fix: compare doc.type_id, not doc.type, with string value
* test: add cursory test of build_file_urls()
* chore: remove the effectively unused DATABASE_TEST_OPTIONS setting
* fix: simplify default settings_local so that db-include-fix.py is not needed in CI
* fix: simplify migrations in db-pg-migrate.sh
* feat: validate the document notify field
* chore: fix spelling in comment
* feat: be more explicit in notify validation, preserving input order.
* fix: restrict notify duplicate check to nameaddrs. Add tests.
* fix: Allow more email addresses in notification lists
Fixes#4736
* Do what @rjsparks suggested
* Number migration
* Number migration
* Fix tests and apply for all doc types
* With bs 5.2.3, no need to rewrite dots in ids and hrefs.
* Remove leftover console.log().
* Inherit color for <code>
* Don't wrap boilerplate URLs; makes it look more like text version.
* chore: Use codespell to fix typos in code.
Second part of replacement of #4651
@rjsparks, I probably need to revert some things here, and I also
still need to add that new migration - how do I do that?
* Revert migrations
* Migrate "Whitelisted" to "Allowlisted"
* TEST_COVERAGE_MASTER_FILE -> TEST_COVERAGE_MAIN_FILE
* Fix permissions
* Add suggestions from @jennifer-richards
* fix: init time inputs in correct tz when editing an interim request
* test: add test
* test: fix old tests that relied on mixing dates, times, and datetimes
* feat: add 'IETF Meetings' filter to upcoming meetings page
* feat: apply 'ietf-meetings' filter to upcoming.ics
* fix: also filter upcoming IETF meetings in the graphical calendar
* test: update tests to match changes
Includes fixing an error in test_upcoming_view_filter_hide_type().
Due to a copy/paste error, it claimed to be testing with a type
both shown and hidden but was not actually hiding a type at all.
* Handle single-word author names
* Some i18n names, e.g., "शिला के.सी." have a dot at the end that is
also part of the ASCII, e.g., "Shilaa Kesii." That trailing dot breaks
extract_authors(). Avoid this issue by stripping the dot from the
ASCII.
* Honorifics need to be part of the extracted ASCII name (e.g., "Lady Garcia")
* feat: stop supporting pre-tzaware migration database dumps. (#4782)
* feat: stop supporting pre-tzaware migration database dumps.
* chore: remove unnecessary env variable
* chore: Use `codespell` to fix typos in comments. (#4794)
First part of replacement of #4651
* feat: Only show IPR search form when not showing search results (#4793)
* feat: Only show IPR search form when not showing search results
Put it into a collapsible that is only expanded by default when not
showing search results.
Fixes#4569
* Don't use example target name
* fix: Don't show reorder UI fixtures unless user can reorder (#4785)
Fixes#4773
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* chore: Update deps and fix resulting HTML validation issues (#4790)
* ci: add missing build matrix config for test-playwright-legacy step
* Single-letter last names exist (e.g., "Carolina de la O")
* Align regex with others
* Fix extraction of very long author names
* Need to be more general
* Add comment
* Also handle i18n names with trailing semicolons
* Name suffixes need to be part of the extracted author names
* Handle i18n names with embedded commas
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
Co-authored-by: Nicolas Giard <github@ngpixel.com>
* fix: avoid readonly attribute on select element
* chore: remove now-unused CSS for select2
* test: don't ignore `readonly` on `select`
* refactor: simplify OutgoingLiaisonForm base class overrides
* feat: Use bs5 for htmlized doc (#4082)
Co-authored-by: Martin Thomson <mt@lowentropy.net>
* fix: Various fixes to HTMLized document view (#4501)
* fix: Pref labels were switched
* fix: Fix ToC for htmlized docs
* Replace datatracker button with document name link to datatracker
* ui: Make fonts even larger on larger window widths
* fix: Document format buttons open new tabs
* fix: Various suggestions from Jay
* fix: Don't show "htmlized" self-link under formats
* ui: Font size fix for iOS
* ui: More little tweaks
* feat/htmlize fixes and improvements (#4506)
* fix: Don't open htmlized view in new tab
* fix: Tests were failing
* feat: Add pref settings to cap max font size
* feat: Add ability to hide side panel
* fix: And more `feat/htmlize` fixes (#4511)
* fix: Remove superfluous scrollbars
* fix: Show email links for authors
* fix: Only show "email authors" button for latest reversion
* fix: Remove duplicate code, fix nav scrolling
* feat: Add RFCs to revision lists
* feat: Add pref option to control dependency inlining
* fix: Add analytical tags
* feat: Notify user of rendering inconsistencies
* feat: Split out bootstrap-icons when not inlining dependencies
* fix: Revision list and minor other fixes
* feat: Show stream logo when possible (#4516)
* fix: Remove superfluous scrollbars
* fix: Show email links for authors
* fix: Only show "email authors" button for latest reversion
* fix: Remove duplicate code, fix nav scrolling
* feat: Add RFCs to revision lists
* feat: Add pref option to control dependency inlining
* fix: Add analytical tags
* feat: Notify user of rendering inconsistencies
* feat: Split out bootstrap-icons when not inlining dependencies
* fix: Revision list and minor other fixes
* feat: Show stream logos when possible
* fix: Pick up CSS changes from https://github.com/martinthomson/rfc-txt-html (#4520)
* fix: Remove superfluous scrollbars
* fix: Show email links for authors
* fix: Only show "email authors" button for latest reversion
* fix: Remove duplicate code, fix nav scrolling
* feat: Add RFCs to revision lists
* feat: Add pref option to control dependency inlining
* fix: Add analytical tags
* feat: Notify user of rendering inconsistencies
* feat: Split out bootstrap-icons when not inlining dependencies
* fix: Revision list and minor other fixes
* feat: Show stream logos when possible
* fix: Pick up CSS changes from https://github.com/martinthomson/rfc-txt-html
* chore: add debug script to replicate GitHub Actions test environment
* chore: cleanup from merge of main
* fix: Fix PDFixation crash due to referencing renamed CSS asset (#4665)
* fix: Rename some CSS classes to handle recent xml2rfc changes (#4791)
* Merge main
* fix: Rename some CSS classes to handle recent xml2rfc changes
Fixes#4784.
* chore: repair merge damage
* chore: more merge corrections
* chore: one more merge correction
* fix: npm dependencies
* fix: Change default font size (#4817)
* Fix dependency issues
* Cap fontsize at 12pt by default
Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Lars Eggert <lars@eggert.org>
Co-authored-by: Martin Thomson <mt@lowentropy.net>
Co-authored-by: Nicolas Giard <github@ngpixel.com>
* test: be more careful with timezone arithmetic
Drops a test case (other day, other time) that was an unlikely corner
case. It was an easy check to include with the old code but is less
so with the rewrite.
* fix: use consistent timezone for IDs in timeslot editor
* chore: remove stray testing/debug code
* refactor: clarify handling what groups looked like at past session times
* feat: add row of button-links to group meetings and meeting session views
* fix: remove unneeded `with` clause
* fix: replace missed instance of historic_parent reference
* fix: reflect that group_at_the_time always returns something
* chore: update copyright lines
* refactor: clarify handling what groups looked like at past session times
* fix: replace missed instance of historic_parent reference
* fix: reflect that group_at_the_time always returns something
* chore: update copyright lines
* feat: Only show IPR search form when not showing search results
Put it into a collapsible that is only expanded by default when not
showing search results.
Fixes#4569
* Don't use example target name
This changes the method to operate in UTC instead of server time.
The existing code was mixing UTC and server time, though, giving
timestamps purporting to be UTC but computed from the date in the
server timezone. To the extent that it matters, I think this change
is preferable to restoring the original behavior.
* fix: set tz when passing a date to timesince_days filter
* fix: fill in tz for a constructed datetime in idindex/index.py
* test: simplify double-negatives in test assertions
* test: fix I-D expiration test cases to be tz aware
* fix: use tz-aware comparisons for in_draft_expire_freeze method
* test: fix tz used for timesince_days filter test case
* test: fix tz problem in test_document_ballot() test
* test: fix tz problem in IprTests.test_notify() test
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
Fixes#4711 i.e., allows using control-click or context menu to open items in the top right search list to open multiple documents in different tabs.
Authored by @kivinen
* feat: move to postgresql
* fix: repair fractional replace statement
* fix: use pathlib to manipulate settings_local
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: do two string replacements, not one followed by another that throws away the first.
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: use pathlib again to manipulate settings_local
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: properly use assert (1/2)
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* fix: properly use assert (2/2)
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
Co-authored-by: Jennifer Richards <jennifer@painless-security.com>
* ci: move HTML validation out of teardown so all failures are caught
Failures in the last batch were suppressed by the original implementation.
* test: rename template validation "test" so it is not auto-discovered
* test: run all HTML validation in a single batch at the end
Adds ~50 MB peak RAM usage during a full test run.
* test: refactor validation to collect failures of all kinds before exit
* test: compare UTC dates in test_search_mail_archive()
* test: compare datetimes, not dates, in action holders test
* test: adjust test to match TZ used for IPR notification message
* test: fix timezone in date_today() calls for liaisons tests
* test: use settings.TIME_ZONE for date in nomination tests
* test: correctly use settings.TIME_ZONE instead of system time zone
* Search for escaped name in HTML output
* Need to check for `plain_name()` in sent emails
* Normalize i18n Unicode names in the same way the database does