* fix: Include missing related drafts in IPR searches
* refactor: extract drafts, sort docs
* chore: indent loop and conditionals to improve readability
* test: handle whitespaces added to IPR search result page
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* feat: Total ids on IESG dashboard
* IESG I-D code comments
* Using Robert's query forIESG dashboard total_ids
* Hiding columns in later IESG Dashboard tables
* Changing IESG dashboard var name to match column table
* Updating IESG pre_pubreqquery
* IESG dashboard prepub req safeParser and graphs
* IESG dashboard fixing Playwright API usage
* IESG dashboard fixing Playwright API usage (2)
* Updating .gitignore for /geckodriver.log
* IESG ad test title
* feat: pages left to ballot on [WIP]
* Adding geckodriver.log to gitignore
* [WIP] pages left to ballot on
* integrating pages left to ballot on WIP
* Tests for ad pages remaining
* Setting states to test ballot items
* refactor ad_pages_left_to_ballot_on count logic
* WIP tests for pages left to ballot on
* chore: remove whitespace change
* fix: look into the BallotPositionDocEventObject
* chore: remove prints
* fix: restructure test
* style: fix js code styling
* fix: only show graph for ADs/Secretariat
---------
Co-authored-by: Matthew Holloway <Matthew Holloway>
Co-authored-by: holloway <matthew@holloway.co.nz>
Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Matthew Holloway <matthew@staff.ietf.org>
* chore: nginx log is s, not ms
* chore: log seconds from gunicorn too
* chore: drop X-Real-IP header / log
* style: Black
* style: single -> double quotes
* feat: add is-authenticated header
* feat: log is-authenticated header
* chore: update nginx-auth.conf to match
* fix: return to ballotpopup
* fix: ballot position return to in modals
* fix: ballot return to test
* fix: ballot return to additional allow handlers
* fix: ballot return to handler syntax error in test
* 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
* test: fix DraftFormTest setup
Tests were failing when the doc factories started
producing pks >= 10 because of an incorrect test
data structure.
* chore: improve comments
* fix: guard against missing "revisions"
* test: add tests for DraftForm
Only testing the part relevant to this issue.
* test: clarify intentions
* chore: "document" -> "draft" in comments
* fix: #7287 ballot return params
* fix: Moving Ballot edit position ballot_edit_return_point from session to query param
* fix: tests for return_to_path param
* chore: removing Playwright tests until we can figure out a plan
* feat: return_to path utility refactoring
* fix: throw HTTP 400 in view rather than bubbling up a 500
* fix: return http400 rather than raising
* Status WIP
* feat: Status
* fix: Status tests
* feat: status redirect
* chore: Status tests
* chore: Status tests
* feat: Status tests
* chore: Status playwright tests
* fix: PR feedback, mostly Vue and copyright dates
* fix: Status model migration tidy up
* chore: Status - one migration
* feat: status on doc/html pages
* chore: Resetting Status migration
* chore: removing unused FieldError
* fix: Update Status test to remove 'by'
* chore: fixing API test to exclude 'status'
* chore: fixing status_page test
* feat: Site Status PR feedback. URL coverage debugging
* Adding ietf.status to Tastypie omitted apps
* feat: Site Status PR feedback
* chore: correct copyright year on newly created files
* chore: repair merge damage
* chore: repair more merge damage
* fix: reconcile the api init refactor with ignoring apps
---------
Co-authored-by: Matthew Holloway <Matthew Holloway>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: Send create user email for password resets where we have an email and person, but no user account
This fixes https://github.com/ietf-tools/datatracker/issues/6458
* fix: create User straight away and use nomral password reset
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* 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>
* 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
* feat: style admin site in dev mode
* refactor: eliminate base_site.html
* fix: remove debug
* fix: commit missing __init__.py
* refactor: make method static; fix tests
* refactor: move api init to AppConfig.ready()
Avoids interacting with the app registry before
it's ready.
* 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
* fix: use BOF states in concluded_groups()
* fix: handle events for older BOFs
These could be cleaned up in the database, but I think this
change does the right thing for the existing data.
* style: Black
* fix: Remove redundant "stream stream" output
fix: Change "Legacy stream" to "Legacy"
chore: Add "stream" to stream.desc as needed
Fixes: #6902
* chore: Remove unused stream_desc parameter
The stream_desc key isn't used in template/doc/docuemnt_draft.html to
don't pass it in nor compute it
Fixes: #6902
* fix: migrate the legacy StreamName
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: Explicitly set `executable_path` for Selenium
So it finds `geckodriver` again.
* Minimize diff
* fix: use existing executable_name
Co-authored-by: Lars Eggert <lars@eggert.org>
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: raw_id_fields for ReviewRequestDocEventAdmin
* fix: raw_id_fields for ReviewAssignmentDocEventAdmin
* fix: raw_id_fields for AddedMessageEventAdmin
* fix: raw_id_fields for SubmissionDocEventAdmin
* refactor: make inheritance clearer
* feat: nginx + robots.txt
* feat: minimal /health/ endpoint
* ci: startupProbe for datatracker pod
* ci: probe auth pod; set timeoutSeconds
* feat: add CSP and other headers to nginx
* fix: typo in nginx.conf
* feat: split auth/dt nginx confs
* test: test health endpoint
* ci: auth service on port 80
We'll remove http-old (8080) in the future.
* ci: rename auth container/nginx cfg
* fix: check correct state machine when clearing status change ballots
Fixes#7335
* fix: Improve ballot clearing tests
* fix: look at the right state machines for defer state for a ballot
* fix: also do the right thing with conflrev defers
* feat: notify_event_to_subscribers_task
* fix: avoid circular import, handle error
* fix: don't queue task in test mode
* fix: don't even send mail in test mode
* test: separately test signal
* fix: if/else error
* test: better naming
* test: test the new task
* test: better test name
* test: refactor notify email test
* fix: save, not update
* test: restore template coverage
* chore: update add-django-cprofile-filter.patch
* fix: only use "draft" state when making aliases
* refactor: eliminate repeated get_state_slug()
On dev, reduces time for a draft-aliases api
call by by 10-15%
* refactor: only annotate inactive drafts
* refactor: de-lint
* refactor: speed up get_draft_authors_emails
Another 20% or so improvement in response time
* fix: guard against null person
* refactor: always use console log handler
* refactor: json for k8s, plain otherwise
* chore: remove syslog from wsgi.py
* chore: remove debug.log()
* chore: drop syslog from settings.py
* refactor: use log.log() in person.utils
* refactor: fetch_meeting_attendance->log.log()
* chore: gunicorn logs as JSON (wip)
* feat: better json log formatting
* refactor: improve log config
* feat: gunicorn access log fields
* fix: remove type hints
The gunicorn logger plays tricks with the
LogRecord args parameter to let it have string
keys instead of being a simple tuple.
The mypy tests rightly flag this. Rather
than fighting the typing, just remove the
hints and leave a comment warning not to
use the gunicorn-specific formatter with
other loggers.
* refactor: generate group aliases on the fly
* chore: remove group alias file check
* chore: drop group alias settings, fix lint
* refactor: rename var to hint it's ignored
* test: update tests
* refactor: move utility to utils
* test: add test
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* refactor: compute draft aliases on demand
n.b., very slow for full set of aliases
* refactor: simplify and cache email_aliases
The name != "" case is, as far as I can see, unused.
* chore: remove draft alias checks
* chore: remove draft alias/virtual settings
* chore: remove lint
* test: update tests
* test: better mocking
* refactor: move utility to utils
* test: add tests
* feat: generate_wg_summary_files_task()
* refactor: wg summaries from filesys for view
* refactor: use new helper for charter views
* refactor: use FileResponse
* refactor: don't use FileResponse
FileResponse generates a StreamingHttpResponse
which brings with it differences I don't fully
understand, so let's stay with HttpResponse
* test: update view tests
* test: test_generate_wg_summary_files_task()
* chore: create PeriodicTask
N.B. that this makes it hourly instead of daily
* feat: send_apikey_usage_emails_task
* chore: update test to use task instead of cmd
* chore: add PeriodicTask
* chore: remove old command + empty management dir
* chore: remove now-empty bin/weekly
* refactor: only consider keys that might have events
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: validate form in login()
* refactor: custom LoginView subclass for logins
Preserves old behavior, but avoids some hacks.
* test: reverse with strings, not view refs
* chore: remove unused imports
* fix: restore logout() call
This allows an exception to be raised if submission
files are missing, leading to a server error. That's
not pretty, but is better than ignoring the fail.
* feat: Add disclaimer banners for unadopted I-Ds and non-IETF RFCs
Fixes#6539
* Fixes
* Add test
* Use BofreqFactory
* Fix disclaimer logic
* fix: Wording changes from stream owners
* fix: Only insert <wbr> when there isn't a space before or after (#6821)
* fix: Only insert <wbr> when there isn't a space before or after.
* Fix @cabo's issue
* fix: Remove debug info from template (#6897)
Fixes#6895
* fix: remove link to Warren's draft from disclaimer text (#7429)
---------
Co-authored-by: Lars Eggert <lars@eggert.org>
* feat: disallow @ and : in name/ascii
@ has long been disallowed via validation in the
views and "/" has been disallowed for the name
field via a validator. This adds @ and : to the
validator and applies it to the name, plain,
ascii, and ascii_short fields. This should
apply everywhere we use a ModelForm.
* test: update test
* chore: migration
* feat: copy 1wg-charters* into other places
* test: update test
* test: test no-copy operation
* style: Black
* fix: Skip copy if dest is a non-dir
* chore: de-lint
* feat: get tool versions without VersionInfo model
* chore: remove update_external_command_info call
* feat: get tool version without VersionInfo
* chore: Remove VersionInfo model
* chore: Migration to remove VersionInfo
* fix: handle errors better; ignore stderr
* fix: type annotation