* 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