* feat: Use session.id to specify session for api_set_session_video_url
* feat: Use session.id to specify session for api_upload_bluesheet
* refactor: Add audio/video stream and onsite tool URLs to Session model
* refactor: Get onsite tool/stream URLs for agenda from Session
* refactor: Use Session methods for onsite tool/stream a few more places
* refactor: Move hard-coded meetecho URLs into settings.py
* feat: Add has_onsite_flag to Session
* chore: Set has_onsite_tool for sessions that had meetecho UrlResources
* fix: Only show onsite tool URLs when Session.has_onsite_tool is True
* test: Update test_api_upload_bluesheet to test deprecated version
* fix: Fix test failure in api_upload_bluesheet view
* test: Add test of new api_upload_bluesheet view
* style: Apply Black style to test_api_upload_bluesheet
* fix: Fix test failures in api_upload_bluesheet()
* test: Update test_api_set_session_video_url to test deprecated version
* fix: Fix test failure in api_set_session_video_url view
* test: Add test of new api_set_session_video_url view
* style: Apply Black styling to new test
* fix: Fix test failures in api_set_session_video_url view
* test: Fix test_meeting_agenda; set has_onsite_tool in SessionFactory
* feat: Add has_onsite_tool to Session list in admin
* feat: Add has_onsite_tool flag to SessionDetailsForm
* feat: Add has_onsite_tool flag to sreq
* feat: Show has_onsite_tool flag on secr view for a submitted request
* feat: Only prompt for has_onsite_tool in sreq for non-wg type groups
* fix: Clean up styling of sreq view a bit
* chore: Renumber migrations
* feat: Add summary data to meeting/requests
* feat: Add Group Type and Purpose tables to requests summary
* fix: use self.assertXX instead of raw assert
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* 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
* 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
* 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
* 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 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: 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
* 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
* 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: 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
* 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
* 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: 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.
* 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
* fix: replace missed instance of historic_parent reference
* fix: reflect that group_at_the_time always returns something
* chore: update copyright lines
* 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>
* feat: add 'cancel session' button to meeting schedule editor
* fix: only show edit/cancel session buttons for secretariat
Other users cannot access these views.
* feat: refuse to cancel a canceled session; give feedback to user
* test: test cancel_session view
* test: test that sessions have edit/cancel buttons
* 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: 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: 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
* 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
* 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
* 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
* 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: remove more tools.ietf.org server only related things.
* chore: remove use of tools.ietf.org floorplans\n\nThe data will move into the FloorPlan models instead.
* fix: only use non-empty Q object as interim group filter
* refactor: add with_meetings queryset to GroupManager
* test: users can only request interims for managed groups
* fix: find managed groups from groupman_roles/authroles
* feat: let chair manage directorate groups
* test: remove debug statements and unused imports
* test: remove do-nothing code from test
* feat: add model to track session attendance
* feat: add model to track session attendance
* feat: add api to set session attendees
* fix: use user pk instead off person pk in the attended api.
* feat: calculate three of five from attended
* feat: management utility to populate Attended model history
* docs: document why nomcom calculations don't use Attended yet.
* fix: add migration to add new personalapikey endpoint to choices
* test: verify very old last login prevents api key use,
* chore: address review nits
* chore: comment on some idiosyncracies of the expected input to populate_attended
* fix: add unique_together constraint for the Attended model
* fix: correctly handle empty querysets passed to three_of_five_eligible functions.
* fix: use DST-friendly tz calculation for TimeSlot end times
Around DST changes, localize(time + duration).astimezone() is not
the same as localize(time).astimezone() + duration. The latter allows
tz-aware times to do their magic and give correct clock times.
* fix: refactor/correct calculation of week-view event start/end times
There were bugs in the timestamp calculations around DST switchover.
This corrects those and tries to clarify and improve documentation in
the relevant code.
* 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
Also rewrites scroll_to_element() using javascript. This seems to be less flaky
than the ActionChains implementation. Slight change in behavior - now scrolls
the requested element to the middle of the window instead of barely into view.
This adds a POST action to the edit_meeting_schedule view that sets a list
of currently visible timeslot types in the user's session. On display of
the schedule editor, this is consulted before defaulting to show only 'regular'
timeslots. An ajax request is made to update the session when changing the
settings in the editor.
* fix: show "Edit materials" button for all groups for a secretariat user
Fixes ietf-tools#3763
* fix: show "import minutes" button to import initial revision
* test: validate that import session minutes buttons are shown
* test: validate that "Edit materials" links are shown
* fix: More fixes for narrow screens
Need to keep checking for issues, there are more.
* Make columns more narrow on narrow screens
* More fixes
* More fixes
* Test fixes
* Fix more tests
* Close tbody