Commit graph

1594 commits

Author SHA1 Message Date
Jennifer Richards 3ec94225e3
chore: remove deprecated_api_upload_bluesheet method (#8443)
* chore: remove deprecated_api_upload_bluesheet()

* test: remove test of removed method
2025-01-21 08:59:40 -06:00
Robert Sparks bdf503a73b
fix: show meetecho recordings for groups with more than one session (#8238) 2024-11-19 15:06:56 -06:00
Matthew Holloway c89646ef8d
feat: Agenda proposed badge (#8164) 2024-11-14 16:59:05 -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
Matthew Holloway de494790b6
fix: Selenium tests via scroll_and_click (#8150)
* fix: selenium tests scroll_and_click

* fix: reduce default timeout to 5 seconds

* fix: also use scroll_and_click on test_upcoming_materials_modal

* fix: remove conditional check on restoring scroll CSS

* fix: restore conditional check on restoring scroll CSS

* chore: code comments and adding jstest.py to coverage ignore
2024-11-05 15:03:21 +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
Robert Sparks 8881010051
feat: explicit names for meetecho recordings (#8062)
* feat: explicit names for meetecho recordings

* fix: better regex and kebab-styled-endpoint-name

* fix: spaces around comparison operator
2024-10-21 16:45:36 -05:00
Jennifer Richards 2d2e879bd1
fix: versioned href for slides URL (#8040) 2024-10-14 10:22:19 -05:00
Sangho Na b34bbe59ad
fix: hide rounded pill if session has no purpose specified (#7997) 2024-10-02 11:44:52 -05:00
Lars Eggert 35074660dc
chore: Prevent test suite artifact creation in work directory (#6438)
* chore: Prevent test suite artifact creation in work directory

Also remove a few other stale test assets while I'm here.

* Try and fix CI

* Change IDSUBMIT_REPOSITORY_PATH

* Make the dir

* test: clean up media/nomcom directories

* test: de-dup settings_temp_path_overrides

* chore: remove debug

* refactor: avoid premature import of test_utils

* refactor: drop useless lambda wrapper

---------

Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
2024-09-18 14:08:01 -05:00
Robert Sparks 97b719505e
test: focus on a helper rather than a whole view (#7951) 2024-09-17 13:06:10 -05:00
Jennifer Richards f5c132a20a
refactor: helper for session recording URL; fix test (#7933)
* refactor: session recording URL label helper

* test: update tests, avoid tz dependence

* test: use date_today()
2024-09-13 16:42:51 -05:00
Kesara Rathnayake f0f2b6d8b6
test: Use timezone aware datetime (#7918)
* test: Use timezone aware datetime

* fixup! test: Use timezone aware datetime
2024-09-12 12:47:53 -05:00
Jennifer Richards 36847428d5
fix: label > 26 sessions per group (#7599)
* fix: label > 26 sessions correctly

* test: test new helper

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2024-09-04 15:39:03 -05:00
Kesara Rathnayake 23e5307d2e
feat: Use meetecho-player.ietf.org for session recording (#7873) 2024-09-03 08:20:36 -05:00
Jennifer Richards 2230242b9b
refactor: speed up finalizing proceedings (#7846)
* chore: increase nginx proxy_read_timeout

* refactor: speed up bluesheet_data

The affiliation helper was extremely slow. Using
queryset annotation speeds it up by almost an order
of magnitude.

* chore: delint
2024-08-22 10:34:52 -05:00
Robert Sparks f53d1cae65
fix: remove unused notes field from SchedSessTimeAssignment model (#7832) 2024-08-21 08:29:09 -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
Jennifer Richards 4b912d55a5
fix: better handle "entered" agendas (#7721)
* fix: don't assume file has open method

The open method is specific to Django's uploaded
file classes, where it just calls seek(0)

* refactor: better upload/enter agenda abstraction
2024-08-07 10:14:39 -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
Russ Housley 63d13074d1
fix: use area-acronym-at-the-time in proceedings (#7723)
When generating IETF meeting proceedings, use the Area Acronym for each WG at the time of the meeting. Fixes #7706.
2024-08-05 11:03:17 -05:00
Jennifer Richards c7f6bdef0a
test: test missing file 2024-07-20 13:02:32 -07:00
Jennifer Richards 0555eef13a
fix: prevent error when no file selected 2024-07-20 12:47:43 -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 08e953995a
feat: better reject null characters in forms (#7472)
* feat: subclass ModelMultipleChoiceField to reject nuls

* refactor: Use custom ModelMultipleChoiceField

* fix: handle value=None
2024-05-28 10:34:55 -05:00
Jennifer Richards f58bbc3caa ci: parameterize / update settings (#7248)
* ci: parameterize gunicorn in datatracker-start.sh

* fix: typo

* ci: update settings_local for helm chart

* ci: Add todo comment

* ci: Drop redundant USE_TZ setting

* ci: Require secrets in production

* ci: fix indentation

* style: Black

* ci: memcached cfg from env in settings.py

* ci: set SITE_URL in settings.py

* refactor: /www/htpasswd -> /a/www/htpasswd

(it's a symlink on production)

* refactor: Remove obsolete SECR_ settings

* refactor: SECR_MAX_UPLOAD_SIZE -> DATATRACKER_...

* refactor: SECR_PPT2PDF_COMMAND -> PPT2PDF_COMMAND

* ci: Fix up helm/settings_local

* ci: Remove commented-out settings

* ci: Refactor/improve env var guards

* ci: More env refactoring / guards
2024-05-13 21:41:36 -04:00
Robert Sparks 370c3b24ed
chore: remove alreay used on-shot import commands (#7333) 2024-04-18 10:25:02 -05:00
Jennifer Richards 2fb550ffce
feat: add room_id param to createRoom API (#7308)
* feat: add room_id param to createRoom API

* test: update tests_helpers.py
2024-04-09 11:21:35 -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
Jennifer Richards 5e8b7ad71e
fix: Do not force showAgenda when agenda_note is set (#7142) 2024-03-05 11:56:34 -06: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 0878c8e2ad
fix: emit bulk redirect configuration for iesg artifacts (#7086)
* fix: emit bulk redirect configuration for iesg artifacts

* chore: remove unintended debug statement
2024-02-22 13:15:29 -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
Jennifer Richards 5fc0f6926b
feat: Show room functional name when editing timeslots (#7075)
* feat: Show functional name in str(Room)

* feat: Show func name in edit_timeslots.html

* test: Update test_location_options
2024-02-20 11:02:48 -06:00
Paul Selkirk 52a707628f
feat: Links to chatlogs and session recordings on proceedings page (#7042)
* feat: Links to chatlogs and session recordings on proceedings page (#6791)

* refactor: Add a url template and convenience function for session_recording url

* refactor: Avoid using the walrus operator
2024-02-20 09:40:31 -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
Robert Sparks 7438a4e87a
chore: remove unused code (#6963) 2024-01-23 18:24:25 -06:00
Robert Sparks 473b84ef90
feat: color for wit in the schedule editor (#6930) 2024-01-17 15:39:28 -06:00
Jennifer Richards 81dc5554a8
test: unpin django-stubs and update mypy (#6901)
* chore: Unpin django-stubs / update mypy

* test: Use "app.model" for ManyToManyField

django-stubs requires "app.model" instead of just "model" for
ManyToManyField lazy model references.

See https://github.com/typeddjango/django-stubs/issues/1802
2024-01-10 09:53:43 -06:00
Robert Sparks 678feca759
fix: remove unneeded (and broken) redirect (#6866) 2024-01-04 12:08:06 -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
Paul Selkirk cfaf84f08f
refactor: Convert custom form template to bootstrap (#6763)
* refactor: Convert custom form template to bootstrap

* refactor: Match form fields to old version
2023-12-14 14:19:22 -06:00
Robert Sparks ce918c4d18
chore: remove management commands already removed in main 2023-12-05 13:14:52 -06:00
Robert Sparks 03e161bae9
chore: merge branch 'main' into feat/rfc 2023-12-05 09:12:11 -06:00