Commit graph

415 commits

Author SHA1 Message Date
Robert Sparks b89c44f443
chore: merge main and fix new views 2023-11-16 15:58:22 -06:00
Eric Vyncke 639043e890
Fix: meeting important dates can have markdown links (#6594)
* Fix #3911 by adding a markdown filter for template

* fix: move the new markdown filter to utils

* fix: linkify after markdown

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
2023-11-10 09:24:13 +01:00
Paul Selkirk b5ee9ec9ab
fix: Don't allow group chair to change group parent (#6496)
* fix: Don't allow group chair to change group parent (#6037)

* test: Fix test_edit_parent_field, add test_edit_parent (whole form)

* test: Verify that the chair can't circumvent the system to change the group parent

* fix: 403 if user tries to edit an unknown or hidden field

* fix: Give edwg GroupFeatures a parent type

This tracks a change that was made directly in the production database
to fix the immediate cause of #6037.

* Empty commit to trigger github unit test
2023-11-05 12:32:03 +01:00
Robert Sparks 28c3e1bd5d
chore: merge branch 'main' into feat/rfc 2023-11-01 10:54:29 -05:00
Robert Sparks ab931f0510
chore: merge main into feat/rfc 2023-10-12 15:11:02 -05:00
Paul Selkirk b04ffe1631 feat: Send mail when slides are approved (#5440) 2023-10-12 13:13:14 -04:00
Paul Selkirk 16f9e0e974
fix: Adjust IRTF charter approval email headers (#5917) (#6460) 2023-10-11 11:09:10 -05:00
Robert Sparks 8732dcb706
fix: bring tests up current. add subseries names to rfc view. fix html. 2023-09-22 12:40:15 -05:00
Robert Sparks 0390f1868f
feat: subseries 2023-09-21 12:54:17 -05:00
Robert Sparks 4811374014
chore: reorder migrations (#6325) 2023-09-15 13:10:19 -05:00
Robert Sparks 621528ad03
ci: Merge branch 'main' into feat/rfc 2023-09-15 11:48:44 -05:00
Paul Selkirk febdeff85f
feat: Capture that IPR disclosures are removed under the Objectively False IPR Disclosure Policy (#6231)
* feat: Capture that IPR disclosures are removed under the Objectively False IPR Disclosure Policy (#6088)

* chore: Move PUBLISH_IPR_STATES from settings_local to settings

* fix: Add migration for removed_objfalse in IprEventTypeName

* fix: De-conflict migration

* fix: De-conflict migration

* style: Move PUBLISH_IPR_STATES ahead of not-production block
2023-09-11 13:14:46 -05:00
Robert Sparks e0f27b9d52
ci: merge branch 'main' into feat/rfc 2023-09-05 12:02:07 -05:00
Robert Sparks 232536c593
fix: migration order and names fixture 2023-08-31 13:12:21 -05:00
Robert Sparks 4b778c155d
fix: reorder name migrations 2023-08-31 08:49:09 -05:00
Robert Sparks f9c9644263
chore: merge main and fix conflicts 2023-08-30 16:35:20 -05:00
Robert Sparks 852f9d90b9
feat: move IAB appeals into the datatracker (#6229)
* feat: basic models for appeals

* fix: modify appeal model to point to group

* fix: explicit date on Appeal objects

* feat: appeals importing management command

* feat: display appeals

* feat: admin for appeals

* fix: limit admin contentype choices

* feat: tastypie resources

* feat: factories and tests

* chore: update group migration

* fix: remove charset from pdf content type

* test: unittest download_name

* fix: admin for new name
2023-08-29 14:07:30 -05:00
Jennifer Richards 2bcb2c04f9
chore: Fix (mostly harmless) quoting error (#6209) 2023-08-24 13:45:17 -05:00
Robert Sparks b646e183fe
chore: update names fixture 2023-08-19 13:19:54 -05:00
Paul Selkirk 06c9f06d55
feat: Reclassify nomcom feedback (#6002)
* fix: Clean up view_feedback_pending

- Remove "Unclassified" column header, which caused misalignment in the table body.

- Show the message author - previously displayed as `(None)`.

* feat: Reclassify nomcom feedback (#4669)

- There's a new `Chair/Advisor Tasks` menu item `Reclassify feedback`.

- I overloaded `view_feedback*` URLs with a `?reclassify` parameter.

- This adds a checkbox to each feedback message, and a `Reclassify` button
at the bottom of each feedback page.

- "Reclassifying" basically de-classifies the feedback, and punts it back
to the "Pending emails" view for reclassification.

- If a feedback has been applied to multiple nominees, declassifying it
from one nominee removes it from all.

* fix: Remove unused local variables

* fix: Fix some missing and mis-nested html

* test: Add tests for reclassifying feedback

* refactor: Substantial redesign of feedback reclassification

- Break out reclassify_feedback* as their own URLs and views,
  and revert changes to view_feedback*.html.

- Replace checkboxes with a Reclassify button on each message.

* fix: Remember to clear the feedback associations when reclassifying

* feat: Add an 'Overcome by events' feedback type

* refactor: When invoking reclassification from a view-feedback page, load the corresponding reclassify-feedback page

* fix: De-conflict migration with 0004_statements

Also change the coding style to match, and add a reverse migration.

* fix: Fix a test case to account for new feedback type

* fix: 842e730 broke the Back button

* refactor: Reclassify feedback directly instead of putting it back in the work queue

* fix: Adjust tests to new workflow

* refactor: Further refine reclassification to avoid redirects

* refactor: Impose a FeedbackTypeName ordering

Also add FeedbackTypeName.legend field, rather than synthesizing it every
time we classify or reclassify feedback.

In the reclassification forms, only show the relevant feedback types.

* refactor: Merge reclassify_feedback_* back into view_feedback_*

This means the "Reclassify" button is always present, but eliminates some
complexity.

* refactor: Add filter(used=True) on FeedbackTypeName querysets

* refactor: Add the new FeedbackTypeName to the reclassification success message

* fix: Secure reclassification against rogue nomcom members
2023-08-08 12:33:17 -05:00
Jennifer Richards 2d46a978e0
chore: Renumber migrations 2023-08-04 00:42:16 -03:00
Jennifer Richards 48d4072eeb
Merge branch 'feat/rfc' into main-merge
# Conflicts:
#	ietf/doc/factories.py
#	ietf/doc/tests_status_change.py
#	ietf/name/fixtures/names.json
#	ietf/templates/doc/document_info.html
2023-08-03 18:34:06 -03:00
Robert Sparks ab0b8e12aa
feat: include submitter in email about submitted slides (#6033)
* feat: include submitter in email about submitted slides

fixes #6031

* chore: remove unintended whitespace change
2023-07-23 13:56:49 -07:00
Robert Sparks dbe1749438
feat: IAB statements (#5940)
* feat: support iab and iesg statements. Import iab statements. (#5895)

* feat: infrastructure for statements doctype

* chore: basic test framework

* feat: basic statement document view

* feat: show replaced statements

* chore: black

* fix: state help for statements

* fix: cleanout non-relevant email expansions

* feat: import iab statements, provide group statements tab

* fix: guard against running import twice

* feat: build redirect csv for iab statements

* fix: set document state on import

* feat: show published date on main doc view

* feat: handle pdf statements

* feat: create new and update statements

* chore: copyright block updates

* chore: remove flakes

* chore: black

* feat: add edit/new buttons for the secretariat

* fix: address PR #5895 review comments

* fix: pin pydantic until inflect catches up (#5901) (#5902)

* chore: re-un-pin pydantic
2023-07-23 11:00:24 -07:00
Robert Sparks d6186af2cc
Merge branch 'main' into feat/rfc 2023-07-20 09:35:58 -05:00
Jennifer Richards 8267f4b452
test: Fix typo in names.json (#5939) 2023-07-07 15:10:47 -05:00
Jennifer Richards 5d9d87897d
fix: Show rfc documents via document_main view (#5919)
* fix: Fix friendly_state() for drafts in rfc state

* refactor: Change became-rfc to became_rfc for consistency

* refactor: Begin handling RFCs separatly in document_main

WIP

* chore: Hide reviews and conflict reviews for RFCs

* chore: Remove irrelevant fields from rfc doc view

* chore: Remove unused variables

* chore: Remove "Versions" field from document_rfc.html

* chore: Hide "Nits" button for RFC documents
2023-07-05 17:30:20 -03:00
Jennifer Richards 106c67ec95
feat: Migrate docevents onto rfc documents (#5872)
* refactor: Separately migrate DocAliases to rfc Documents

The gap in numbering is intentional, another migration will be along
shortly.

* feat: Migrate docevents onto rfc documents

* chore: Refining DocEvent migration (WIP)

* chore: Move IANA Action state change docevents to rfc docs

* chore: Fix typo

* refactor: Eliminate "created" rfc state

* chore: Leave "ballot set" comments on drafts
2023-06-23 17:16:04 -03:00
Jennifer Richards f2c2957925
refactor: Represent RFCs as their own DocType (#5835)
* feat: Add RFC DocTypeName, StateType, and States

* refactor: Rename rfc_number() to deprecated_rfc_number()

* feat: Add rfc_number field to DocInfo

* feat: Add DocRelationshipName "became-rfc"

* chore: First-pass migration to create rfc Documents

* chore: create_rfc_documents migration depends on new names

* refactor: Rename variable

* fix: Fix revname / downcase name for "became-rfc" DocRelationshipName

* chore: Remove debugging print statements

* feat: Point rfc aliases at rfc Documents

* test: Refactor RFC factories

* refactor: Rewrite is_rfc() in terms of type_id

* test: Use RfcFactory as base for IndividualRfcFactory

* refactor: Replace calls to deprecated_rfc_number()

* refactor: Remove deprecated_rfc_number() method

* test: Import WgRfcFactory
2023-06-20 15:28:16 -03:00
Jennifer Richards 7475aa01b6
Merge pull request #5634 from ietf-tools/main
chore: Merge main into feat/django4
2023-05-16 13:06:49 -03:00
Robert Sparks 6fd9a39df8
chore: update test name fixuture (#5627) 2023-05-15 16:38:11 -05:00
Jennifer Richards 22bf508922
test: Suppress notices from mypy involving factory types 2023-05-15 12:20:02 -03:00
Jennifer Richards 372891194e
feat: Move IESG agenda items from filesystem to DB (#5366)
* feat: Add TelechatAgendaContent model and related support

* feat: Add UI for managing TelechatAgendaContents

* refactor: Rename _view view to _manage

* feat: Add a view to dump the TelechatAgendaContent as text/plain

* refactor: Point agenda_data() helpers at content in the DB

* refactor: Replace references to settings URLs/paths with new plumbing

* chore: Remove now-obsolete settings from settings.py

* feat: Link to telechat_agenda_content_manage view from iesg agenda

* fix: Use correct view name

* feat: Link from agenda content management page to IESG agenda view

* chore: Create resources

* chore: Add new names to names.json

* chore: Renumber migration after rebase

* chore: Remove unused import

* fix: Clean up partially removed code

* chore: Add admin model for TelechatAgendaContent

* chore: Simplify __str__ method for TelechatAgendaContent

* test: Add TelechatAgendaContentFactory

* test: Test the fill_in_agenda_administrivia() function

* test: Test that agenda contains action_items content

* test: Test that sensitive agenda links are restricted by role

* test: Test the telechat_agenda_content_view view

* test: Add test of telechat_agenda_content_edit view

* fix: Add type attribute to button to satisfy html validator

* test: Filter TelechatAgendaSectionName to used=True for tests

* test: More thoroughly test for likely(ish) permission errors

* fix: Fix typo in "tablist" role

* test: Test telechat_agenda_content_manage view

* style: Put back newlines at EOF

* chore: Add admin for TelechatAgendaSectionName

* chore: Renumber migrations

* fix: Depend on the correct migration

Forgot to update the number, but was also depending on the wrong
migration.
2023-04-23 18:05:58 -05:00
Jennifer Richards 72954c24fc
chore: Add type annotations to satisfy linter (#5435) 2023-03-29 09:06:14 +09:00
Jennifer Richards 6b826fd985
refactor: Purge old migrations and update ci to build on a clean schema (#5431)
* refactor: Remove all existing migrations

* refactor: Create clean set of migrations

* chore: Skip check_statetype_slugs when DB is not yet populated

* fix: Do not cache active_groups_menu on module import

* fix: Do not patch timezone awareness out of oidc-provider

* refactor: Migrate to create postgres schema, only use pgloader for data

* ci: Use migration scripts from feat/pg-migrations branch

* Revert "ci: Use migration scripts from feat/pg-migrations branch"

This reverts commit c82f64c614241ccede4865a50d494725c8a47c15.

* ci: Run check before migrate

* fix: Remove redundant migration caused by merge error

* chore: Add casts/ALTER TABLEs to eliminate pgloader errors/warnings

* chore: Change schema name to match docker image assumptions

* chore: Clear out schema so we get a clean start in case of a retry
2023-03-28 18:06:07 +09:00
Lars Eggert f8b48f4c43
fix: use Internet-Draft more consistently across the UI (#5104)
* s/Internet Draft/Internet-Draft/i

* s/draft/Internet-Draft/i or s/draft/I-D/i

* s/ID/I-D/

* Fix tests

* a -> an

* Undo case-change to ASCII

* Address code review comments

* Add migrations

* Add merged migration

* fix: straighten out migrations

* fix: finish straightening out migrations

---------

Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2023-02-11 10:09:28 -06:00
Robert Sparks 6bbad15b3d
fix: restore generation of rswg/rsab chair aliases (#5121) 2023-02-09 16:57:42 -06:00
Robert Sparks afac1f8f19
feat: enable editorial stream adoption and balloting (#5011)
* feat: enable editorial stream adoption and balloting

* fix: bring tests into line with refactor

* feat: force intended_std_level to Informational when adopting into a non-ietf stream.

* fix: improve blocking position labels and email content

* fix: simplify pointer to group on doc main page for rswg docs

* fix: recover from merge typos

* fix: correct defer and clear ballot behavior

* fix: improve publication request access logic

* fix: clean up broken editorial state

* fix: adjust test to match migrations
2023-01-31 13:50:51 -06:00
Robert Sparks 1f0ab6418f
chore: update test name fixture (#4925) 2022-12-21 14:28:07 -06:00
Lars Eggert 220be21998
chore: Use codespell to fix typos in code. (#4797)
* chore: Use codespell to fix typos in code.

Second part of replacement of #4651

@rjsparks, I probably need to revert some things here, and I also
still need to add that new migration - how do I do that?

* Revert migrations

* Migrate "Whitelisted" to "Allowlisted"

* TEST_COVERAGE_MASTER_FILE -> TEST_COVERAGE_MAIN_FILE

* Fix permissions

* Add suggestions from @jennifer-richards
2022-12-07 15:10:35 -06:00
Jennifer Richards 69447d0ba0
Merge branch 'feat/tzaware' into jennifer/main-for-tzaware-merge
# Conflicts:
#	ietf/name/fixtures/names.json
#	ietf/utils/management/commands/send_gdpr_consent_request.py
2022-10-18 16:57:42 -03:00
Robert Sparks 57b30fb967
chore: bring the names test fixture into alignment with the current database (#4583) 2022-10-14 17:53:04 -05:00
Jennifer Richards 354b3ef311
chore: add '-Z' suffix to timestamps in names.json 2022-10-14 16:55:40 -03:00
Robert Sparks 50668c97cd
feat: apis for attaching chatlogs and polls to session materials (#4488)
* 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>
2022-10-13 09:20:36 -05:00
Jennifer Richards 3705bedfcd
feat: Celery support and asynchronous draft submission API (#4037)
* ci: add Dockerfile and action to build celery worker image

* ci: build celery worker on push to jennifer/celery branch

* ci: also build celery worker for main branch

* ci: Add comment to celery Dockerfile

* chore: first stab at a celery/rabbitmq docker-compose

* feat: add celery configuration and test task / endpoint

* chore: run mq/celery containers for dev work

* chore: point to ghcr.io image for celery worker

* refactor: move XML parsing duties into XMLDraft

Move some PlaintextDraft methods into the Draft base class and
implement for the XMLDraft class. Use xml2rfc code from ietf.submit
as a model for the parsing.

This leaves some mismatch between the PlaintextDraft and the Draft
class spec for the get_author_list() method to be resolved.

* feat: add api_upload endpoint and beginnings of async processing

This adds an api_upload() that behaves analogously to the api_submit()
endpoint. Celery tasks to handle asynchronous processing are added but
are not yet functional enough to be useful.

* perf: index Submission table on submission_date

This substantially speeds up submission rate threshold checks.

* feat: remove existing files when accepting a new submission

After checking that a submission is not in progress, remove any files
in staging that have the same name/rev with any extension. This should
guard against stale files confusing the submission process if the
usual cleanup fails or is skipped for some reason.

* refactor: make clear that deduce_group() uses only the draft name

* refactor: extract only draft name/revision in clean() method

Minimizing the amount of validation done when accepting a file. The
data extraction will be moved to asynchronous processing.

* refactor: minimize checks and data extraction in api_upload() view

* ci: fix dockerfiles to match sandbox testing

* ci: tweak celery container docker-compose settings

* refactor: clean up Draft parsing API and usage

  * remove get_draftname() from Draft api; set filename during init
  * further XMLDraft work
    - remember xml_version after parsing
    - extract filename/revision during init
    - comment out long broken get_abstract() method
  * adjust form clean() method to use changed API

* feat: flesh out async submission processing

First basically working pass!

* feat: add state name for submission being validated asynchronously

* feat: cancel submissions that async processing can't handle

* refactor: simplify/consolidate async tasks and improve error handling

* feat: add api_submission_status endpoint

* refactor: return JSON from submission api endpoints

* refactor: reuse cancel_submission method

* refactor: clean up error reporting a bit

* feat: guard against cancellation of a submission while validating

Not bulletproof but should prevent

* feat: indicate that a submission is still being validated

* fix: do not delete submission files after creating them

* chore: remove debug statement

* test: add tests of the api_upload and api_submission_status endpoints

* test: add tests and stubs for async side of submission handling

* fix: gracefully handle (ignore) invalid IDs in async submit task

* test: test process_uploaded_submission method

* fix: fix failures of new tests

* refactor: fix type checker complaints

* test: test submission_status view of submission in "validating" state

* fix: fix up migrations

* fix: use the streamlined SubmissionBaseUploadForm for api_upload

* feat: show submission history event timestamp as mouse-over text

* fix: remove 'manual' as next state for 'validating' submission state

* refactor: share SubmissionBaseUploadForm code with Deprecated version

* fix: validate text submission title, update a couple comments

* chore: disable requirements updating when celery dev container starts

* feat: log traceback on unexpected error during submission processing

* feat: allow secretariat to cancel "validating" submission

* feat: indicate time since submission on the status page

* perf: check submission rate thresholds earlier when possible

No sense parsing details of a draft that is going to be dropped regardless
of those details!

* fix: create Submission before saving to reduce race condition window

* fix: call deduce_group() with filename

* refactor: remove code lint

* refactor: change the api_upload URL to api/submission

* docs: update submission API documentation

* test: add tests of api_submission's text draft consistency checks

* refactor: rename api_upload to api_submission to agree with new URL

* test: test API documentation and submission thresholds

* fix: fix a couple api_submission view renames missed in templates

* chore: use base image + add arm64 support

* ci: try to fix workflow_dispatch for celery worker

* ci: another attempt to fix workflow_dispatch

* ci: build celery image for submit-async branch

* ci: fix typo

* ci: publish celery worker to ghcr.io/painless-security

* ci: install python requirements in celery image

* ci: fix up requirements install on celery image

* chore: remove XML_LIBRARY references that crept back in

* feat: accept 'replaces' field in api_submission

* docs: update api_submission documentation

* fix: remove unused import

* test: test "replaces" validation for submission API

* test: test that "replaces" is set by api_submission

* feat: trap TERM to gracefully stop celery container

* chore: tweak celery/mq settings

* docs: update installation instructions

* ci: adjust paths that trigger celery worker image  build

* ci: fix branches/repo names left over from dev

* ci: run manage.py check when initializing celery container

Driver here is applying the patches. Starting the celery workers
also invokes the check task, but this should cause a clearer failure
if something fails.

* docs: revise INSTALL instructions

* ci: pass filename to pip update in celery container

* docs: update INSTALL to include freezing pip versions

Will be used to coordinate package versions with the celery
container in production.

* docs: add explanation of frozen-requirements.txt

* ci: build image for sandbox deployment

* ci: add additional build trigger path

* docs: tweak INSTALL

* fix: change INSTALL process to stop datatracker before running migrations

* chore: use ietf.settings for manage.py check in celery container

* chore: set uid/gid for celery worker

* chore: create user/group in celery container if needed

* chore: tweak docker compose/init so celery container works in dev

* ci: build mq docker image

* fix: move rabbitmq.pid to writeable location

* fix: clear password when CELERY_PASSWORD is empty

Setting to an empty password is really not a good plan!

* chore: add shutdown debugging option to celery image

* chore: add django-celery-beat package

* chore: run "celery beat" in datatracker-celery image

* chore: fix docker image name

* feat: add task to cancel stale submissions

* test: test the cancel_stale_submissions task

* chore: make f-string with no interpolation a plain string

Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
2022-08-22 13:29:31 -05:00
Robert Sparks 6ed4ea0f93
feat: point to Zulip chat rather than jabber. (#4218)
* feat: point to Zulip chat rather than jabber.

* fix: Address review comments from Jennifer and Nick
2022-07-15 13:48:54 -05:00
Jennifer Richards 4f34c0478e
fix: Authorize interim session requests using data-driven group roles (#4120)
* 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
2022-06-22 14:00:44 -05:00
Robert Sparks 02942a6954
chore: bring test names fixture up to match the current database (#4054) 2022-06-02 11:09:47 -05:00
Robert Sparks c89f7c89c5
feat: begin supporting the new rfc editor model (#3960)
* feat: restructure rfcedtype groups. add rpc, rswg, rsab.

* feat: show rfc editor groups on menu

* feat: add the editorial stream

* fix: repair broken html and extent dest coverage.

* chore: address Lars review comment

* chore: update copyright notices.
2022-05-20 12:22:17 -05:00
Jennifer Richards 966e1c806a
chore: remove editor_label field from ConstraintName model (#3783) 2022-04-14 15:30:11 -03:00