Commit graph

435 commits

Author SHA1 Message Date
Matthew Holloway db7d3074da
feat: Add session recordings (#8218)
* 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>
2025-01-31 10:28:39 -06:00
Jennifer Richards e91bda7e5e
feat: consolidate HTML sanitizing (#8471)
* refactor: isolate bleach code

* refactor: move html fns to html.py

* refactor: lose the bleach.py module; refactor

* refactor: sanitize_document -> clean_html

Drops <meta charset="utf-8"> addition after cleaning.

* fix: disambiguate import

* feat: restore <meta charset="utf-8"> tag

* chore: comments

* chore(deps): drop lxml_html_clean package

* refactor: on second thought, no meta charset

* refactor: sanitize_fragment -> clean_html

* test: remove check for charset

* chore: fix lint
2025-01-28 11:28:19 -06:00
Robert Sparks 8c787b54f9
fix: control test meeting date to be in the past (#8177) 2024-11-07 17:41:36 +00:00
Robert Sparks 277f1aafeb
fix: search for correct ids in test (#8168) 2024-11-06 16:38:37 +00:00
Matthew Holloway 5348aefef9
feat: show existing recordings on materials page (#8102)
* 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
2024-11-06 08:52:04 +00:00
Jennifer Richards 7a5b152c5e
feat: async refresh of agenda data (#8146) 2024-11-04 15:24:35 +00:00
Jennifer Richards 087bf1e77c
fix: prefer PDF in (+refactor) materials_document view (#8136)
* 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.
2024-11-03 14:34:16 +00:00
Jennifer Richards 3130ecd9f5
fix: add recording-name api key endpoint; appauth url fix (#8081)
* fix: add endpoint option for recording-name

* chore: migration

* test: validate PersonalApiKey when used in tests

* fix: limit /api/appauth URLs as intended

* test: fix tests

* chore: fix lint

* test: PersonalApiKey create -> factory

* chore: remove unused import
2024-10-25 08:52:09 -05:00
Sangho Na b34bbe59ad
fix: hide rounded pill if session has no purpose specified (#7997) 2024-10-02 11:44:52 -05:00
Robert Sparks 97b719505e
test: focus on a helper rather than a whole view (#7951) 2024-09-17 13:06:10 -05:00
Rich Salz 0c8db80b18
fix: Show recordings for interims (#7197)
* 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>
2024-08-07 11:23:18 -05:00
Sangho Na b90820eb7a
fix: Hide last modified field in agenda when unavailable (#7722)
* 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
2024-08-07 09:15:01 -05:00
Jim Fenton 9ef7bff77c
feat: Unify slide upload and proposal (#7787)
* attempt at optional approval

* Update of meeting slides propose/upload

* Fix tests and residual coding bugs

* Remove gratuitous blank lines
2024-08-06 10:03:37 -05:00
Jennifer Richards c7f6bdef0a
test: test missing file 2024-07-20 13:02:32 -07:00
Jennifer Richards 20f183c948
feat: update meetecho slides on approval (#7633)
* feat: update meetecho slides on approval

* test: test slide management
2024-07-10 15:33:52 -05:00
Jennifer Richards 21f467f062
test: attendance uses plain_name() (#7198) 2024-03-16 00:46:32 -05:00
Robert Sparks e6138ca126
feat: session apis (#7173)
* 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>
2024-03-12 10:22:24 -05:00
Robert Sparks 7287e98709
feat: upload narrative minutes (#7125)
* feat: upload narrative minutes

* chore: cover other new URL path
2024-03-04 16:48:02 -06:00
Robert Sparks 8cb7f3dcae
feat: Import IESG artifacts into the datatracker (#6908)
* 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
2024-02-20 16:35:08 -06:00
Paul Selkirk 9ab820fca9
fix: Expand and enforce Cancel Interim Meeting Request comments length to 512 (#7069)
* fix: Expand and enforce Cancel Interim Meeting Request comments length to 512 (#6998)

* fix: Verify comment text in generated email
2024-02-20 09:30:41 -06:00
Paul Selkirk c1e40ff100
feat: Allow entering agenda text directly (#6792)
* 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
2023-12-20 16:40:13 -06:00
Robert Sparks 03e161bae9
chore: merge branch 'main' into feat/rfc 2023-12-05 09:12:11 -06:00
Robert Sparks c1627ed011
fix: restore attendee dbtemplate for old meetings pending data correction (#6656)
* fix: restore attendee dbtemplate for old meetings pending data correction

* test: adjust attendees test to match workaround
2023-11-17 10:01:09 -06:00
Robert Sparks b89c44f443
chore: merge main and fix new views 2023-11-16 15:58:22 -06:00
Ryan Cross 2974e81624
fix: build proceedings attendee list from MeetingRegistration table. … (#6567)
* fix: build proceedings attendee list from MeetingRegistration table. Fixes #6265

* fix: move participants_for_meeting to meeting.utils

* fix: move test_participants_for_meeting to meeting tests
2023-11-07 13:09:19 +01:00
Robert Sparks 28c3e1bd5d
chore: merge branch 'main' into feat/rfc 2023-11-01 10:54:29 -05:00
Paul Selkirk 6f634a049a fix: Don't forget to empty_outbox 2023-10-12 16:28:26 -04:00
Paul Selkirk b04ffe1631 feat: Send mail when slides are approved (#5440) 2023-10-12 13:13:14 -04:00
Robert Sparks 823281ba6c
chore: first pass at clearing out canonical_name 2023-08-18 10:59:55 -05:00
Kesara Rathnayake e1e15da398
fix: Add editorial stream to meeting materials (#6047)
Fixes #6042
2023-07-25 07:50:49 -07:00
Kesara Rathnayake 101963d3bd
fix: Add editorial stream to proceedings (#6027)
* fix: Add editorial stream to proceedings

Fixes #5717

* fix: Move editorial stream after the irtf in proceedings
2023-07-24 10:06:28 -07:00
Paul Selkirk 0567b3dea2
fix: /meeting/materials splits out named sessions the same way /meeting/proceedings does (#5715)
* fix: /meeting/materials splits out named sessions the same way /meeting/proceedings does

* test: Test separation of named sessions in the materials
2023-06-09 12:41:01 -05:00
Jennifer Richards 1922a6066e
Merge pull request #5700 from ietf-tools/main
chore: main -> django4
2023-05-31 10:59:09 -03:00
Paul Selkirk 65bd689daa
fix: make chat room an overrideable property of Session (#5681)
* 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
2023-05-24 10:26:19 -05:00
Jennifer Richards be25fb954b
test: Ignore menu bar when counting "submit" buttons
(the "Sign out" link is now a submit button)
2023-05-19 14:18:02 -03:00
Jennifer Richards 37a6521879
test: Form is r.context["form"], not r["form"] 2023-05-19 13:37:39 -03:00
Jennifer Richards fdc074b313
test: Use new signature for assertFormError 2023-05-19 13:23:07 -03:00
Jennifer Richards 0319f35e0f
test: Use Django 3.2 HttpResponse.headers API 2023-05-15 13:01:59 -03:00
Jennifer Richards 22bf508922
test: Suppress notices from mypy involving factory types 2023-05-15 12:20:02 -03:00
Robert Sparks 6089d4726c
chore: remove debugging file write from test (#5598) 2023-05-11 09:37:02 -05:00
Robert Sparks f8113cb862
fix: close open things (#5593)
* fix: close open things

* fix: clean up test created files

* fix: remove one close too many
2023-05-10 11:19:34 -05:00
Jennifer Richards 09ff9c6ced
refactor: Tie Meetecho resources to Session pk (#5281)
* 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
2023-04-23 18:15:01 -05:00
Ryan Cross 1bd5c5e2f1
feat: Add requests summary (#5439)
* 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>
2023-03-30 08:07:59 +09:00
Robert Sparks 01b4a91bfe
Merge remote-tracking branch 'ietf-tools/main' into feat/postgres 2023-03-29 10:41:47 +09:00
Jennifer Richards bc9c74ef50
fix: Render complete iCalendar event when show_location is False (#5394)
* 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
2023-03-26 14:13:58 +09:00
Robert Sparks 88a78cf1ab
Merge remote-tracking branch 'ietf-tools/main' into feat/postgres 2023-03-20 13:46:32 -05:00
Ryan Cross b654b49d6b
refactor: Remove secr proceedings (#5256)
* refactor: remove import_audio_files() and related code

* refactor: move functions from proc_utils to meeting/utils

* refactor: remove secr/proceedings
2023-03-10 15:33:01 -06:00
Robert Sparks 4b4e876305
Merge branch 'main' into feat/postgres 2023-03-09 11:43:38 -06:00
Lars Eggert 97df94f41d
fix: Add footer with group interim ics calendar to announce email (#5279)
* fix: Add footer with group interim ics calendar to announce email

Fixes #2939

* Fix test
2023-03-03 10:32:15 -06:00
Robert Sparks 82f23da2b3
Merge remote-tracking branch 'ietf-tools/main' into feat/postgres 2023-02-28 16:25:46 -06:00