* feat: catch and report any <date> parsing error
* refactor: error handling in a more testable way
* fix: no bare `except`
* test: exception cases for test_parse_creation_date
* fix: explicitly reject non-numeric day/year
* test: suppress xml2rfc output in test
* refactor: context manager to capture xml2rfc output
* refactor: more capture_xml2rfc_output usage
* fix: capture_xml2rfc_output exception handling
* feat: basic blobstore infrastructure for dev
* refactor: (broken) attempt to put minio console behind nginx
* feat: initialize blobstore with boto3
* fix: abandon attempt to proxy minio. Use docker compose instead.
* feat: beginning of blob writes
* feat: storage utilities
* feat: test buckets
* chore: black
* chore: remove unused import
* chore: avoid f string when not needed
* fix: inform all settings files about blobstores
* fix: declare types for some settings
* ci: point to new target base
* ci: adjust test workflow
* fix: give the tests debug environment a blobstore
* fix: "better" name declarations
* ci: use devblobstore container
* chore: identify places to write to blobstorage
* chore: remove unreachable code
* feat: store materials
* feat: store statements
* feat: store status changes
* feat: store liaison attachments
* feat: store agendas provided with Interim session requests
* chore: capture TODOs
* feat: store polls and chatlogs
* chore: remove unneeded TODO
* feat: store drafts on submit and post
* fix: handle storage during doc expiration and resurrection
* fix: mirror an unlink
* chore: add/refine TODOs
* feat: store slide submissions
* fix: structure slide test correctly
* fix: correct sense of existence check
* feat: store some indexes
* feat: BlobShadowFileSystemStorage
* feat: shadow floorplans / host logos to the blob
* chore: remove unused import
* feat: strip path from blob shadow names
* feat: shadow photos / thumbs
* refactor: combine photo and photothumb blob kinds
The photos / thumbs were already dropped in the same
directory, so let's not add a distinction at this point.
* style: whitespace
* refactor: use kwargs consistently
* chore: migrations
* refactor: better deconstruct(); rebuild migrations
* fix: use new class in mack patch
* chore: add TODO
* feat: store group index documents
* chore: identify more TODO
* feat: store reviews
* fix: repair merge
* chore: remove unnecessary TODO
* feat: StoredObject metadata
* fix: deburr some debugging code
* fix: only set the deleted timestamp once
* chore: correct typo
* fix: get_or_create vs get and test
* fix: avoid the questionable is_seekable helper
* chore: capture future design consideration
* chore: blob store cfg for k8s
* chore: black
* chore: copyright
* ci: bucket name prefix option + run Black
Adds/uses DATATRACKER_BLOB_STORE_BUCKET_PREFIX option. Other changes
are just Black styling.
* ci: fix typo in bucket name expression
* chore: parameters in app-configure-blobstore
Allows use with other blob stores.
* ci: remove verify=False option
* fix: don't return value from __init__
* feat: option to log timing of S3Storage calls
* chore: units
* fix: deleted->null when storing a file
* style: Black
* feat: log as JSON; refactor to share code; handle exceptions
* ci: add ietf_log_blob_timing option for k8s
* test: --no-manage-blobstore option for running tests
* test: use blob store settings from env, if set
* test: actually set a couple more storage opts
* feat: offswitch (#8541)
* feat: offswitch
* fix: apply ENABLE_BLOBSTORAGE to BlobShadowFileSystemStorage behavior
* chore: log timing of blob reads
* chore: import Config from botocore.config
* chore(deps): import boto3-stubs / botocore
botocore is implicitly imported, but make it explicit
since we refer to it directly
* chore: drop type annotation that mypy loudly ignores
* refactor: add storage methods via mixin
Shares code between Document and DocHistory without
putting it in the base DocumentInfo class, which
lacks the name field. Also makes mypy happy.
* feat: add timeout / retry limit to boto client
* ci: let k8s config the timeouts via env
* chore: repair merge resolution typo
* chore: tweak settings imports
* chore: simplify k8s/settings_local.py imports
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
* feat: add session recordings
* feat: add session recordings
* feat: deleting recordings
* feat: deleting recordings and initial form values
* feat: use meeting date rather than today for initial title field. Fix delete recording
* feat: confirm delete recordings modal. fix server utils delete recording
* fix: removing debug console.log
* feat: change button name from 'Ok' to 'Delete' for confirm deletion to be clearer
* feat: UTC time in string and delete modal text
* fix: django html validation tests
* fix: django html validation tests
* fix: django html validation tests
* refactor: Work with SessionPresentations
* fix: better ordering
* chore: drop rev, hide table when empty
* test: test delete_recordings method
* fix: debug delete_recordings
* test: test add_session_recordings view
* fix: better permissions handling
* fix: only delete recordings for selected session
* refactor: inline script -> js module
* chore: remove accidental import
*shakes fist at pycharm*
* fix: consistent timestamp format
plus slight rephrase
* style: Black
* chore: remove comment
* test: update test to match
* fix: reversible url pattern for materials
Tests were perturbed in a way that led to a test
getting an interim instead of an IETF meeting.
This exposed a bug reversing the URL for the
materials_document() view. This splits it into
two patterns that are equivalent to the original.
---------
Co-authored-by: Jennifer Richards <jennifer@staff.ietf.org>
* fix: correctly disconnect post_save signal
* chore: remove dumprelated.py and loadrelated.py
These have not been used in quite some time and would need
a careful review before trusting. Taking them out to avoid
accidents.
* chore: fix typo in log message
* fix: write new conflict reviews to the ftp directory
* fix: log exception description
* chore: avoid reusing a name for mypy
* fix: write non-meeting-related slides to ftp/slides
* fix: write status changes to ftp dir
* fix: copy draft yang modules to the ftp dir
the last commit above (see #8401) has no tests :(. There aren't tests of this yang scaffolding to add to. Adding a set of tests should be an independent larger effort.
* feat: add wiki button to agenda list for hackathon sessions
* fix: update client/agenda/AgendaScheduleList.vue
Co-authored-by: Matthew Holloway <matthew@holloway.co.nz>
* fix: broken tests
---------
Co-authored-by: Matthew Holloway <matthew@holloway.co.nz>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* fix: keep draft-iesg state on expiration. Update action holders
* feat: task to repair docs in dead because expiry
* fix: restore all to-date flows through update_action_holders
* fix: Fetch the System user following more regular conventions
* fix: better signal test
* Clarify "Replace" in I-D submission form
Update help text In the "Replacement Information" section of
the "Status" tab
* refactor: update node, eslint, neostandard + fix esm (#8083)
* chore: update dependencies
* fix: eslint + neostandard
* fix: add corepack prompt env var to init script
* docs: Update README.md
---------
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
* ci: update base image target version to 20241114T1703
* ci: fix tests.yml workflow
* fix: clarify "Replace" in I-D submission form #8205
update quote syntax issue on previous update help text In the "Replacement Information" section of the "Status" tab to fix#8059
* Revert "refactor: update node, eslint, neostandard + fix esm (#8083)"
This reverts commit 649879efd745470f6e0cc6768d889f45640e1505.
* Revert "ci: update base image target version to 20241114T1703"
This reverts commit f11144017ed788bc7a38a1d028127434f0d50eb4.
* Revert "ci: fix tests.yml workflow"
This reverts commit 39231321c49291565a39608b98740e098c74dda7.
* Update forms.py
---------
Co-authored-by: Nicolas Giard <github@ngpixel.com>
Co-authored-by: Robert Sparks <rjsparks@nostrum.com>
Co-authored-by: NGPixel <NGPixel@users.noreply.github.com>
* fix: test file existance using metadata
* fix: use Path more
* fix: don't read the file to see if it exists
* fix: more conservative error handling
* chore: remove unused import
* feat: django-rest-framework + Person/Email API (#8233)
* chore: djangorestframework -> requirements.txt
* chore: auth/perm/schema classes for drf
* chore: settings for drf and friends
* chore: comment that api/serializer.py is not DRF
* feat: URL router for DRF
* feat: simple api/v3/person/{id} endpoint
* fix: actually working demo endpoint
* chore: no auth for PersonViewSet
* ci: params in ci-run-tests.yml
* Revert "ci: params in ci-run-tests.yml"
This reverts commit 03808ddf94afe42b7382ddd3730959987389612b.
* feat: email addresses for person API
* feat: email update api (WIP)
* fix: working Email API endpoint
* chore: annotate address format in api schema
* chore: api adjustments
* feat: expose SpectacularAPIView
At least for now...
* chore: better schema_path_prefix
* feat: permissions for DRF API
* refactor: use permissions classes
* refactor: extract NewEmailForm validation for reuse
* refactor: ietfauth.validators module
* refactor: send new email conf req via helper
* feat: API call to issue new address request
* chore: move datatracker DRF api to /api/core/
* fix: unused import
* fix: lint
* test: drf URL names + API tests (#8248)
* refactor: better drf URL naming
* test: test person-detail view
* test: permissions
* test: add_email tests + stubs
* test: test email update
* test: test 404 vs 403
* fix: fix permissions
* test: test email partial update
* test: assert we have a nonexistent PK
* chore: disable DRF api for now
* chore: fix git inanity
* fix: lint
* test: disable tests of disabled code
* test: more lint