* feat: add session recordings
* feat: add session recordings
* feat: deleting recordings
* feat: deleting recordings and initial form values
* feat: use meeting date rather than today for initial title field. Fix delete recording
* feat: confirm delete recordings modal. fix server utils delete recording
* fix: removing debug console.log
* feat: change button name from 'Ok' to 'Delete' for confirm deletion to be clearer
* feat: UTC time in string and delete modal text
* fix: django html validation tests
* fix: django html validation tests
* fix: django html validation tests
* refactor: Work with SessionPresentations
* fix: better ordering
* chore: drop rev, hide table when empty
* test: test delete_recordings method
* fix: debug delete_recordings
* test: test add_session_recordings view
* fix: better permissions handling
* fix: only delete recordings for selected session
* refactor: inline script -> js module
* chore: remove accidental import
*shakes fist at pycharm*
* fix: consistent timestamp format
plus slight rephrase
* style: Black
* chore: remove comment
* test: update test to match
* fix: reversible url pattern for materials
Tests were perturbed in a way that led to a test
getting an interim instead of an IETF meeting.
This exposed a bug reversing the URL for the
materials_document() view. This splits it into
two patterns that are equivalent to the original.
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
* feat: show existing recordings on materials page
* chore: notes and recordings tests WIP
* chore: test session recordings
* feat: label all session recording urls as meetecho
* fix: prefer PDF in materials_document(); refactor
* style: Black
* refactor: split urls entry into simpler pair
It seems Django cannot reverse a URL pattern that uses "|" to
combine options when one inclues a named variable and the other
does not.
* test: test extension choice
* fix: fix test failures
* refactor: get rid of io.open()
* refactor: reunite url patterns
Adds option for a trailing "/" when using an extension,
which was not previously supported but should be somewhere
between harmless and a feature.
* fix: Show recordings for interims
Add methods uses_notes(), has_recordings(), and uses_chat_logs() to the
meeting object (with semantically correct tests) and use them consistently
throughout. List the recordings if the "meeting numnber" starts with
"interim"
Fixes: #6543
* style: Use "is not" and "is" for None comparisons
* None comparison and non-IETF meetings
style: Use "is not None" instead of "!="
For non-IETF meetings assume chat logs exist
* fix: Restore useNotes for JS fields
* fix: uses_notes->useNotes (in JavaScript)
Also add comment about meeting number field in tests
* Missed a uses_notes->useNotes edit
* fix: useNotes->usesNotes
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* test: Update tests to check for Updated field in agenda.txt
* fix: Hide Updated in agenda.txt if too old
* test: Remove confusing tests on CSV agenda
* refactor: Make updated() return None when no valid timestamp found
* refactor: Remove walrus operator
* feat: Show bluesheets using Attended tables (#7094)
* feat: Show bluesheets using Attended tables (#6898)
* feat: Allow users to add themselves to session attendance (#6454)
* chore: Correct copyright year
* fix: Address review comments
* fix: Don't try to generate empty bluesheets
* refactor: Complete rewrite of bluesheet.html
* refactor: Fill in a few gaps, close a few holes
- Rename the live "bluesheet" to "attendance", add some explanatory text.
- Add attendance links in materials view and pre-finalized proceedings view.
- Don't allow users to add themselves after the corrections cutoff date.
* fix: Report file-save errors to caller
* fix: Address review comments
* fix: typo
* refactor: if instead of except; refactor gently
* refactor: Rearrange logic a little, add comment
* style: Black
* refactor: auto_now_add->default to allow override
* refactor: jsonschema to validate API payload
* feat: Handle new API data format
Not yet tested except that it falls back when the old
format is used.
* test: Split test into deprecated/new version
Have not yet touched the new version
* style: Black
* test: Test new add_session_attendees API
* fix: Fix bug uncovered by test
* refactor: Refactor affiliation lookup a bit
* fix: Order bluesheet by Attended.time
* refactor: Move helpers from views.py to utils.py
* test: Test that finalize calls generate_bluesheets
* test: test_bluesheet_data()
* fix: Clean up merge
* fix: Remove debug statement
* chore: comments
* refactor: Renumber migrations
---------
Co-authored-by: Paul Selkirk <paul@painless-security.com>
* chore: Remove unused import
* style: Black
* feat: Stub session update notify API
* feat: Add order & rev to slides JSON
* style: Black
* feat: Stub actual Meetecho slide deck mgmt API
* refactor: Limit reordering to type="slides"
* chore: Remove repository from meetecho API
(API changed on their end)
* feat: update Meetecho on slide reorder
* refactor: drop pytz from meetecho.py
* chore: Remove more repository refs
* refactor: Eliminate more pytz
* test: Test add_slide_deck api
* fix: Allow 202 status code / absent Content-Type
* test: Test delete_slide_deck api
* test: Test update_slide_decks api
* refactor: sessionpresentation_set -> presentations
* test: Test send_update()
* fix: Debug send_update()
* test: ajax_reorder_slides calls Meetecho API
* test: Test SldesManager.add()
* feat: Implement SlidesManager.add()
* test: Test that ajax_add_slides... calls API
* feat: Call Meetecho API when slides added to session
* test: Test SlidesManager.delete()
* feat: Implement SlidesManager.delete()
* test: ajax_remove_slides... calls Meetecho API
* feat: Call Meetecho API when slides removed
* chore: Update docstring
* feat: rudimentary debug mode for Meetecho API
* test: remove_sessionpresentation() calls Meetecho API
* feat: Call Meetecho API from remove_sessionpresentation()
* test: upload_slides() calls Meetecho API
* style: Black
* fix: Refactor/debug upload_session_slides
Avoids double-save of a SessionPresentation for the session
being updated and updates other sessions when apply_to_all
is set (previously it only created ones that did not exist,
so rev would never be updated).
* test: Fix test bug
* feat: Call Meetecho API when uploading session slides
* fix: Only replace slides actually linked to session
* fix: Delint
Removed some type checking rather than debugging it
* fix: Send get_versionless_href() as url for slides
* test: TZ-aware timestamps, please
* chore: Add comments
* feat: Call Meetecho API in edit_sessionpresentation
* feat: Call Meetecho API in remove_sessionpresentation
* feat: Call Meetecho API from add_sessionpresentation
* fix: Set order in add_sessionpresentation
* fix: Restrict API calls to "slides" docs
* feat: Call Meetecho API on title changes
* test: Check meetecho API calls in test_revise()
* fix: better Meetecho API "order" management
* fix: no PUT if there are no slides after DELETE
* feat: Catch exceptions from SlidesManager
Don't let errors in the MeetEcho slides API interfere with
the ability to modify slides for a session.
* feat: Limit which sessions we send notifications for
* fix: handle absence of request_timeout in api config
* test: always send slide notifications in tests
* fix: save slides before sending notification (#7172)
* fix: save slides before sending notification
* style: fix indentation
It's not a bug, it's a flourish!
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
Co-authored-by: Paul Selkirk <paul@painless-security.com>
* chore: remove unused setting
* feat: initial import of iesg minutes
* fix: let the meetings view show older iesg meetings
* feat: iesg narrative minutes
* feat: import bof coordination call minutes
* wip: import commands for iesg appeals and statements
* feat: import iesg statements.
* feat: import iesg artifacts
* feat: many fewer n+1 queries for the group meetings view
* fix: restore chain of elifs in views_doc
* fix: use self.stdout.write vs print in mgmt commands
* fix: use replace instead of astimezone when appropriate
* chore: refactor new migrations into one
* fix: transcode some old files into utf8
* fix: repair overzealous replace
* chore: black
* fix: address minro review comments
* fix: actually capture transcoding work
* fix: handle multiple iesg statements on the same day
* fix: better titles
* feat: pill badge replaced statements
* fix: consolodate source repos to one
* feat: liberal markdown for secretariat controlled content
* fix: handle (and clean) html narrative minutes
* feat: scrub harder
* fix: simplify and improve a scrubber
* chore: reorder migrations
* feat: Allow entering agenda text directly (#6532)
* fix: Hide label as well as file/text input box
* refactor: Package javascript for static/dist
* fix: Fix test cases broken by view changes
* test: Add test case for entering agenda text
* refactor: assertRedirects
* fix: make chat room an overrideable property of Session
* test: validate that /meeting/session/<sessionid>/edit shows and sets chat room
* test: validate Session.chat_room_name
* 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>
* 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