* 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.