Commit graph

2085 commits

Author SHA1 Message Date
Tero Kivinen 79416cfa0a
fix: Add history line when changing the review deadline. (fixes #6598) (#7194)
* Add history line when changing the review deadline.

* chore: reduce redundancy

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2024-03-20 19:05:25 -05:00
Tero Kivinen cec0e0c9d8
Make review settings history usable. (#7205) 2024-03-20 19:04:37 -05:00
Eric Vyncke faa3efd136
fix: Missing button text for PostScript (#7200)
* ci: Update build-base-app.yml workflow

* Do not list PS in build_file_urls

* Update ietf/doc/utils.py

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>

---------

Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2024-03-20 18:09:47 -05:00
Jennifer Richards c696a715c0
chore: Drop alias generation mgmt commands (#7082)
* chore: Remove generate_draft_aliases.py

Also remove test and update some now-stale help strings.
These are not very helpful, but will not exist for long
in their updated incarnation.

* chore: Remove generate_group_aliases.py

... and its test.

* chore: Remove unused import

* chore: Remove unused import
2024-03-20 17:28:24 -05:00
Robert Sparks 3bfb9303bc
fix: appropriate metadata for editorial stream docs (#7195) 2024-03-15 23:16:09 -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
Paul Selkirk 08e0c83324
refactor: Remove Google from document history search (#7093)
* refactor: Remove Google from document history search

"Search lists" dropdown menu devolves into a single button
(two buttons for ADs).

* refactor: Remove unused ARO search

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2024-02-28 09:58:21 -06:00
Paul Selkirk ce1571ee68
fix: Revert "Email authors" link for an RFC to the draft that it came from (#7077)
* fix: Revert "Email authors" link for RFCs to the draft that it came from (#6856)

* refactor: Move mailto_name calculation to the view

* fix: Fully revert document_draft.html
2024-02-28 08:52:38 -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 3157cf65d1
fix: Accept&ignore group_type for some views 2024-02-12 17:38:36 -04:00
Jennifer Richards 4c396e6645
fix: Add file ext to href for non-meeting slides (#7030) 2024-02-07 12:17:48 -06:00
Jennifer Richards fa56223939
feat: API to replace email alias generation commands (#7012)
* feat: DraftAliasGenerator class

Encapsulates logic from generate_draft_aliases.py

* refactor: Avoid circular imports

* feat: Add draft_aliases API endpoint

* feat: Add @requires_api_token decorator

Stolen from feat/rpc-api

* feat: Add token auth to draft_aliases endpoint

* feat: draft-aliases-from-json.py script

Parses output from the draft_aliases API call

* chore: Remove unused cruft

* refactor: Avoid shadowing "draft" name

* fix: Suppress empty lists from DraftAliasGenerator

* refactor: Use a GET instead of POST

* feat: GroupAliasGenerator class

* feat: group aliases API view

* fix: Handle domains array correctly

* fix: Suppress empty group aliases

* refactor: Generalize aliases-from-json.py script

* refactor: Same output fmt for draft and group alias apis

* feat: Sort addresses for stability

* fix: Add "anything" virtual alias

* test: Test requires_api_token decorator

* feat: Harden is_valid_token against misconfig

* test: Test is_valid_token

* test: Test draft_aliases view

* test: Test group_aliases view

* test: Test DraftAliasGenerator

* fix: ise group is type "ise" in test data

* test: Fix logic in testManagementCommand

The test was incorrect - and fails when fixed. :-(

* test: Test GroupAliasGenerator

Test currently fails

* fix: Suppress empty -ads alias

* test: Fix group acronym copy/paste error

I *think* this must be what had been intended. The
code does not look like it ever dealt with GroupHistory,
so I'm pretty sure it wasn't meant to have the same
acronym used by two different Groups at different
times.

* test: Check draft .notify alias generation

* test: Cover get_draft_notify_emails()
2024-02-07 10:15:50 -06:00
Jennifer Richards b4cf04a09d
feat: celery tasks to replace ietf/bin scripts (#6971)
* refactor: Change import style for clarity

* feat: Add iana_changes_updates_task()

* chore: Squelch lint warning

My linter does not like variables defined outside
of __init__()

* feat: Add PeriodicTask for iana_changes_updates_task

* refactor: tasks instead of scripts on sync.views.notify()

* test: Test iana_changes_updates_task

* refactor: rename task for consistency

* feat: Add iana_protocols_update_task

* feat: Add PeriodicTask for iana protocols sync

* refactor: Use protocol sync task instead of script in view

* refactor: itertools.batched() not available until py312

* test: test iana_protocols_update_task

* feat: Add idindex_update_task()

Calls idindex generation functions and does the file
update dance to put them in place.

* chore: Add comments to bin/hourly

* fix: annotate types and fix bug

* feat: Create PeriodicTask for idindex_update_task

* refactor: Move helpers into a class

More testable this way

* refactor: Make TempFileManager a context mgr

* test: Test idindex_update_task

* test: Test TempFileManager

* fix: Fix bug in TestFileManager

yay testing

* feat: Add expire_ids_task()

* feat: Create PeriodicTask for expire_ids_task

* test: Test expire_ids_task

* test: Test request timeout in iana_protocols_update_task

* refactor: do not re-raise timeout exception

Not sure this is the right thing to do, but it's the
same as rfc_editor_index_update_task

* feat: Add notify_expirations_task

* feat: Add "weekly" celery beat crontab

* refactor: Reorder crontab fields

This matches the crontab file field order

* feat: Add PeriodicTask for notify_expirations

* test: Test notify_expirations_task

* test: Add annotation to satisfy mypy
2024-01-31 15:24:20 -06:00
Robert Sparks d9cc26be96
feat: replace references to User with references to Person (#6024)
* refactor: change references from User to Person (#5821)

* refactor: Change CommunityList reference from User to Person

* refactor: Convert more user references to person

* refactor: Change augment_docs_and_user_with_user_info to person

* refactor: Change Nomination and Feedback references from User to Person

* refactor: Change a few test case function signatures to be more pythonic

* refactor: Harmonize how profile and photo views look up email_or_name

* refactor: Rework community views to operate on Person instead of User (#5859)

* test: Update tests to try all of the person's emails and aliases

* fix: Recode a test case to avoid an exception if there's Unicode in the URL

This only happens using the form-filling and submission feature of
WebTest, which is only used in this one test case, so just it rip out.

* test: Add duplicate-person tests

* fix: If there are multiple matching users, prefer the logged-in one.

* chore: We no longer use WebTest, so don't include it.

* fix: Address review comments

* fix: case-insensitive person name or email matching (#6096)

* chore: Renumber migrations

* fix: Update merged code so tests pass (#6887)

* fix: Use refactored method

* fix: Don't assume user has person

* fix: Use new view param name

* chore: Drop community lists w/o person; cleanup (#6896)

* fix: Don't assume user has person

* fix: user->person in update_community_list_index.py

* feat: Remove CommunityLists without Person

* refactor: Speed up nomcom migrations

---------

Co-authored-by: Paul Selkirk <paul@painless-security.com>
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
2024-01-24 11:00:19 -06:00
Jennifer Richards 4227ef5948
fix: do nothing if rfc has no draft; add test (#6960)
* fix: Check that rfc came from draft first

* test: Add mgmt command test

* test: Cannot force-reset draftless RFC
2024-01-23 10:58:34 -06:00
Jennifer Richards 97822214eb
fix: Set authors when publishing an RFC (#6957)
* fix: Copy authors from draft when RFC is published

* feat: Mgmt command to set RFC authors from draft

* feat: Better event messages
2024-01-23 09:04:13 -06:00
Jennifer Richards 47dad0706d
refactor: Avoid module-level queries (#6916)
* refactor: Avoid module-level queries

* refactor: Avoid repeated State queries
2024-01-16 08:53:24 -06:00
Jennifer Richards cb70da9584
fix: Never show AD col on drafts_for_ad.html (#6914)
* fix: Pass ad as Person instead of name

* refactor: Remove redundant AD check

Results being shown are already filtered by AD if the `ad`
variable is not `None`

* refactor: Add show_ad... flag to prepare_document_table

* refactor: Expose show_ad_and_shepherd flag
2024-01-12 16:39:59 -06:00
Jennifer Richards c7ca0b7d8e
Revert "chore: Replace markup_txt with rfc2html (#6632)" (#6909)
This reverts commit e24fb601db.
2024-01-11 13:08:24 -06:00
Robert Sparks 38ffd8ad2e
fix: correct DATE DTEND values - they are non-inclusive (#6907) 2024-01-10 13:55:07 -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
Lars Eggert e24fb601db
chore: Replace markup_txt with rfc2html (#6632)
* chore: Replace markup_txt with rfc2html

* Suppress HTML issues

* Remove comment

* Suppress harder

* Suppress even more

* Fix test

* Ignore vnu "duplicate ID" errors

* Undo accidental commit

* Fix RFCs

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2024-01-05 12:29:28 -06:00
Robert Sparks 88bc604949
fix: filter draft documents that became RFCs out of docs by ad (#6884) 2024-01-05 08:10:24 -06:00
Robert Sparks 2331b7541b
Merge pull request #6878 from pselkirk/fix-6861
fix: Correctly display the last pre-RFC rev of a draft
2024-01-04 11:01:08 -06:00
Paul Selkirk 02e0d960a4 fix: Correctly display the last pre-RFC rev of a draft 2024-01-04 00:50:08 -05:00
Paul Selkirk b445119428
fix: Properly set AD as action holder when submitting to IESG for publication (#6854)
* fix: Properly set AD as action holder when submitting to IESG for publication (#5227)

The clear intent of `to_iesg` is that
a) the document AD should be the group AD, if not already set, and
b) the document Action Holder should be the document AD;
but there was an order-of-operation error,
such that the Action Holder remained empty.

* refactor: Don't take values out of the parent scope, don't insert values into the parent scope

* refactor: Streamline DocEvent creation
2024-01-03 16:30:06 -06:00
Robert Sparks bbc64d30fd
fix: count RFCs correctly for doc/ad (#6833)
* fix: count RFCs correctly for doc/ad

* chore: improve query legibility
2024-01-03 10:37:44 -06:00
Paul Selkirk 748bcc328f
fix: Wrap weasyprint to catch exceptions (#6728)
* fix: Wrap weasyprint to catch exceptions (#6324)

* test: Restore socket function after test

* test: Use mock instead of monkeying with sockets

* refactor: Log the error

* fix: Don't catch non-Exception interruptions

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2023-12-27 11:56:38 -06:00
Paul Selkirk 288b69d0f3
fix: Allow reassignment of withdrawn review assignment (#6723) (#6850) 2023-12-27 11:09:45 -06:00
Robert Sparks 2c11b544f1
fix: show state help for the editorial stream (#6836) 2023-12-26 08:53:52 -06:00
Robert Sparks c328ff7425
fix: improve idnits2_state document creation time calculations (#6832)
* fix: improve idnits2_state document creation time calculations

* chore: apply black to the idnits2_state function
2023-12-21 17:52:55 -06:00
Paul Selkirk 359a107fc5
fix: Include RFCs when searching on a draft name (#6787) (#6827) 2023-12-21 17:27:32 -06:00
Robert Sparks bc74977fcc
fix: 404 requests for bibtex for none draft or rfc documents (#6834)
* fix: 404 requests for bibtex for none draft or rfc documents

* test: test rejecting the types with factories already being imported
2023-12-21 16:27:48 -06:00
Lars Eggert db8fba486b
fix: Deduplicate referenced_by (#6820)
Fixes #6808
2023-12-20 16:36:55 -06:00
Jennifer Richards 149f82f578
fix: Include refs to pre-RFC drafts as refs to the RFC (#6784)
* fix: clean up shadowed name in document_referenced_by.html

* fix: include refs to rfc's came_from_draft()

* fix: include refs to draft's became_rfc()

* fix: Count indirect refs by RFCs

* refactor: break indirect ref_by counting to its own fn

* fix: only count refs to pre-rfc draft, not post-draft rfc

(and rename a method)

* test: test referenced_by_rfcs methods

The test_referenced_by_rfcs_as_rfc_or_draft() test
fails because there's a bug!

* test: actually, do double-count refs to rfc/draft

Let's do include refs to an rfc and its precursor draft
as separate refs. This almost surely indicates a data
error because it would mean an rfc referenced both an
rfc and the draft that it came from. That should never
be allowed, so at least let some light fall on it if
it happens.

* chore: Add docstring to document_referenced_by view
2023-12-18 09:11:53 -06:00
Lars Eggert f5bd078351
fix: AD queue graphs and AD doc list sorting (#6752)
* Fix AD queue graphs and AD doc list sorting.

Fixes #6700
Fixes #6720

* Fix the issue @rdanyliw found. Hopefully.

* More fixes

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2023-12-14 15:05:00 -06:00
Robert Sparks 501a5b8e58
fix: consider subseries when calculating downref (#6777) 2023-12-14 09:35:30 -06:00
Robert Sparks d74d5ed233
fix: ignore attempts to look for versions of rfcs, but find the rfc. 2023-12-13 11:54:22 -06:00
Jennifer Richards dd41234bb4
fix: Allow blank originaltargetaliasname (#6748) 2023-12-07 15:01:55 -04:00
Jennifer Richards 2e2960a2af
refactor: Use type_id="rfc" in migration (#6746) 2023-12-07 11:38:03 -04:00
Robert Sparks 402186477f
chore: reorder migrations 2023-12-05 12:15:17 -06:00
Robert Sparks 03e161bae9
chore: merge branch 'main' into feat/rfc 2023-12-05 09:12:11 -06:00
Jennifer Richards e3ba021e1d
feat: Teach ajax_select2_search about subseries (#6709)
* feat: Teach ajax_select2_search about subseries

* refactor: "draft,rfc" -> "all" in a missed spot
2023-11-30 11:22:32 -04:00
Jennifer Richards b011f0ab32
fix: Show requested rev if it is current, even w/o dochistory (#6703) 2023-11-29 08:20:46 -06:00
Robert Sparks 9dec409b41
feat: iab workshops (#6684)
* feat: iab workshops

* chore: keep names fixture up to date
2023-11-27 08:09:30 -06:00
Robert Sparks 2137dd8491
fix: teach ajax_select2_search_docs about rfcs (#6679) 2023-11-21 15:33:44 -06:00
Lars Eggert 3d44825333
ci: Switch to using geckodriver (#6541)
* Switch to using geckodriver

* Switch to selenium 4

* Undo

* Remove comment

* Fixes

* Restore non-standard line endings to minimize diff

* Undo

* Remove comment

* test: Fix test_upcoming_view_time_zone_selection

The inputs are hidden and managed by JS, so click
the visible elements instead.

* test: Clumsy fix to test_upcoming_materials_modal

Waiting for the button to be clickable does not
work because the modal is still fading in, so does
not actually close. Would be better to check for it
responding, but I haven't found the right way to do
that yet.

* test: Fix test_add_author_forms

Sending '\n' does not seem to work as it did before,
so click the option instead.

Also reverted some fixme hacks that seem to be obe.

* ci: Update base.Dockerfile

* test: add resource limits to dev/tests/debug.sh env

* ci: add upload of geckodriver.log on failure

* ci: run tests as user 1001

* ci: run app-create-dirs as sudo

* ci: set home folder to root to run tests

---------

Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2023-11-21 15:30:50 -06:00
Robert Sparks eb22d6a12f
fix: address dangling pyflake (#6678) 2023-11-21 13:17:55 -06:00
Robert Sparks b760248cc0
fix: correct stream document view (#6677)
* fix: correct stream document view

* fix: better filtering for stream view
2023-11-21 12:33:36 -06:00
Jennifer Richards b215867cb1
chore: Reorder migrations (#6660) 2023-11-17 14:56:21 -04:00