* 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>
* test: Test rfc_editor_index_update_task
* chore: Add docstring to test
* fix: Reuse stats instead of fetching twice
* test: Test fetch_meeting_attendance_task
* chore: Remove outdated tasks
* Revert "chore: Add docstring to test"
This reverts commit 0395410d665c0d310248fd151386f013357c5d13.
* Revert "test: Test rfc_editor_index_update_task"
This reverts commit 4dd9dd131723497db3d2aa76166169fd32c42fdd.
* test: Test rfc_editor_index_update_task
This time without reformatting the entire file...
* chore: Remove accidentally committed fragment
* test: Annotate function to satisfy mypy
* chore: Remove unused imports
* refactor: Factor out helper from fetch_meeting_attendance.py
* feat: Define fetch_meeting_attendance_task task
Equivalent to the fetch_meeting_attendance management command
* chore: Disable fetch_meeting_attendance in bin/daily
* feat: Log errors in fetch_meeting_attendance_task
* feat: Enable a result backend for celery
Ignore results by default, but enable the backend so we
can manage tasks
* feat: Define daily task in ietf.utils.tasks
* refactor: Make bin/send-review-reminders into a task
* refactor: Make bin/send-scheduled-mail into a task
* chore: Update copyright years
* refactor: Make bin/rfc-editor-index-updates into a task
* refactor: Accept date type in rfc index update fn
* chore: Update comment
* fix: Annotate param as Optional
* fix: Revert treating skip_older_than_date as str
Misunderstood the comment, "fixed" a non-bug. Oops.
* feat: mgmt command to create periodic tasks
* feat: add summary of tasks to mgmt cmd
* style: black
* fix: Remove debug statements
* feat: Enable/disable tasks
* chore: Disable periodic tasks by default
* chore: Revert changes to daily and every15m
* fix: Call intended function
* chore: Add task descriptions
* 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
* 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
* 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
* 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>
* 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: don't create a volunteer object when a person has already volunteered
* fix: safer create
* refactor: use shorthand from django
* fix: also protect volunteer from datatracker from race
* 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
* Fix AD queue graphs and AD doc list sorting.
Fixes#6700Fixes#6720
* Fix the issue @rdanyliw found. Hopefully.
* More fixes
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* feat: Capture volunteers from the registration system. Fixes#5938
* fix: allow withdrawn field to be null
* docs: add explanatory code comments
* fix: identify current nomcom by is_accepting_volunteers
* fix: use auto_now_add instead of auto_now
* fix: update migration
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: Avoid accessing slug when state is None
* fix: ignore pre-rfc drafts as rfc-to-rfc references
* fix: also ignore pre-rfc to pre-rfc refs
* chore: remove breakpoint
* fix: ignore subseries non-downrefs
* fix: label nodes as RFCS when possible
* fix: get "rfc" flag right
* chore: Remove comment, answer seems to be "no"
* refactor: Specify state type; drop redundant source doc type check
We're only admitting source__type="draft", so
no need to check it again in filter queries
* refactor: Specify state type in old code
* feat: Sort RFCs on subseries doc pages
* feat: Sort RFCs on subseries index pages
* fix: Show subseries doc name as page title
* refactor: Use prettystdname filter for consistency
* fix: Combine Group and GroupHistory when counting
* refactor: Use same symbol in parallel iterators
* fix: Handle group acronym changes in assertion
* refactor: Avoid reference to GroupHistory in assertions
* chore: Revert so assertion fails on changed acronym
The filtering and meeting displays disagree on how to handle this,
so let's get a notification if it comes up in production.
* 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>
* fix: Reorder conflict review columns
Fixes#6528
Also remove some redundant computation while I'm here.
* Remove some more stuff that isn't needed
* Progress
* Delivers current functionality
* Add some comments
* Handle expired docs
* Interim commit
* Fix tests
* Cleanup
* More cleanup
* Reduce differences to current view
* Interim commit
* More progress
* Getting close
* Make page functional again
* Remove unused variable
* Suppress mypy warning
* Fix#6553
* Log in as secretary to execute new code, and remove redundant check
* Remove unneeded code
* Fix#6608 by adding link to state description to state heading
* Missed part of this change in last commit.
Also fix an unrelated template nit while I'm here.
* 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>
* ci: Update build-base-app.yml workflow
* fix: Relabel NomCom to show start year, not range
Show just the year that a NomCom started, because showing
the start/end years is confusing.
Fixes: #3419
* fix: Shwo Nomcoms year convened only
Fix the main nomcom index page and the announcement archive page
---------
Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: prevent creation of duplicate MeetingRegistration records
* fix: use get_or_create to prevent duplicate MeetingRegistrations
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: move meeting management from base Docs to Meeting
* fix: add permission check for ability to request an interim meeting
* fix: guard against no user being logged in
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* Added history entry when approving the slides.
Also changed os.rename to shutils.move as the submissions and
proceedings are on the separate filesystems on the docker image,
and this same thing might happen in the real environment in the
future.
* Add migrations for the docevents type.
* 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
* fix: Don't redirect user to the login page when logging in (#5876)
(Embrace and extend c4bf508cd8.)
* test: Add test case for login button
* refactor: The template filter just strips off a path prefix, so rename/recode accordingly
Also test with a non-trivial redirect target.
* Revert "fix: Change some colors to make agenda tool work in dark mode (#6428)"
This reverts commit 699a8e2d9e.
* Revert "Revert "fix: Change some colors to make agenda tool work in dark mode (#6428)""
This reverts commit 5adafac4cb7896e9dd309a3385ec9aab5035e7d3.
* chore: Revert only font-family change
* chore: Add comment to ietf.scss
* fix: More dark mode fixes
This first commit increases contrast of the leftmenu text.
* Fix own ballot position highlight in dark mode
* Fix dark mode axis color in timeline diagrams
* Enable highcharts dark mode
* Fix template
* Properly import our customized bs5 everywhere
* Fix#6499
* Use bs5 color for border-left
* Remove superfluous load
* refactor: Update parsers/base.py for Python3
* style: Black
* refactor: Remove mime type check from FileParser
* refactor: Validate that submission is UTF-8
The mime check distinguished us-ascii from UTF-8,
but as far as I can tell the code relying on it
treated both as equally valid.
* feat: Clear error when file is not valid XML
* chore: Remove unused import
* test: Update tests to match changes
* fix: Count bytes starting from 1
* test: Add tests of FileParser validations
* fix: Fix / simplify regexp
* test: Test error caused by bad XML submission
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: Add remote instructions to interim agenda page
Fixes#6433Fixes#6249
* Also add date and time
* Fix HTML
* Fix CI fail
* Address code review comments
* More suggestions from @rjsparks
* Fix HTML
* Add suffix
* feat: Update IRTF state when entering/exiting IETF conflict review (#3469)
* fix: Update IRTF state in approve_conflict_review() as well
* chore: Add "new_state != prev_state" guard
* fix: teach search about rfcs and subseries
* fix: more general manipulation of searches for rfc and subseries
* fix: only tweak subseries search if the thing after the subseries id is digits
* feat: Allow reviewer to accept a review they're previously rejected
* feat: Add a reviewer who has previously rejected a review to the list of suggested reviewers.
This largely un-does d105f8b, at the request of at least one team secretary.
* fix: Went a little overboard on the previous commit
one_assignment still has to exclude reviewers who rejected the assignment,
or they could end up being the suggested reviewer.
* fix: Actually do the assignment
* fix: If there's an existing assignment, don't create a new one
* style: Restructure conditional for clarity
* test: Add test cases for accepting or assigning a review assignment after rejecting it
* fix: Allow filtering for nominees who have not declined
Fixes#6380
* Update views.py
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* Added a new review team setting
allow_reviewer_to_reject_after_deadline that will allow rejecting
review requests, even after the deadline is past. Also modified that
the secretary, or whoever manages the reviews is always allowed to
reject the review regardless of the deadline as he/she could change
the deadline anyways.
* Fixed but in view_reviews (wrong variable name), added more test
cases to the test_reviews.py for different reject cases.
* test: More thoroughly exercise assignment rejection
* chore: Renumber migration
* test: Unrelated user cannot reject assignments
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
* refactor: Add helper class to compare tag changes
* feat: Give AD the action in ad-f-up state
* refactor: Remove unnecessary check
* refactor: Reorganize update_action_holders()
* refactor: Remove unnecessary guard
* test: Update test for new AD handling
* test: Update another test
* test: Test ad-f-up effect on action holders
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: Reject nul characters in ipr search parameters
Really ought to rework this as a form, but in the meantime
this should prevent 500s. Could probably reduce the number
of places we check the value.
* fix: Guard against absent parameters
* fix: Remove stray junk
* fix: Use correct response code (400, not 405)
* test: Test handling of null chars in IPR search
* refactor: Simplify branch statements
This helps my code validator see that "start" is
always set.
* fix: Allow secretariat to change the state of a dead draft (#6051)
* refactor: Move the secretariat-can-edit-dead-state enablement to the template to limit side-effects.
* style: Correct whitespace to fully revert file
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>