Skip to content

feat: blobstore-driven meeting materials#9780

Merged
rjsparks merged 15 commits into
mainfrom
feat/blobmat
Oct 23, 2025
Merged

feat: blobstore-driven meeting materials#9780
rjsparks merged 15 commits into
mainfrom
feat/blobmat

Conversation

@jennifer-richards
Copy link
Copy Markdown
Member

Draft while we're testing

jennifer-richards and others added 15 commits October 14, 2025 12:13
* refactor: exclude_deleted() for StoredObject queryset

* chore: comment

* feat: meeting materials blob resolver API
* feat: materials blob retrieval API (WIP)

* refactor: alphabetize ARTIFACT_STORAGE_NAMES

* chore: limit buckets served

* refactor: any-meeting option in _get_materials_doc()

* feat: create missing blobs on retrieval
* chore: add comment

* fix: allow bluesheets to be retrieved

Normally not retrieved through /meeting/materials, but they're
close enough in purpose that we might as well make them available.

* fix: only update StoredObject.modified if changed

* fix: preserve mtime when creating blob

* refactor: better exception name

* feat: render .md.html from .md blob

* fix: explicit STATIC_IETF_ORG value in template

Django's context_processors are not applied to render_string calls as we use them here, so settings are not available.

* fix: typo

* fix: decode utf-8 properly

* feat: use filesystem to render .md.html
* feat: ResolvedMaterial model + migration

* feat: method to populate ResolvedMaterial (WIP)

* refactor: don't delete ResolvedMaterials

Instead of deleting the ResolvedMaterials for a meeting, which might
lose updates made during processing, update existing rows with any
changes and warn if anything changed during the process.

* fix: fix _get_materials_doc()

Did not handle the possibility of multiple DocHistory objects with the
same rev.

* refactor: factor out material lookup helper

* feat: resolve blobs via blobdb/fs for cache

* chore: add resource

* feat: admin for ResolvedMaterial

* feat: cache-driven resolve materials API

* fix: add all ResolvedMaterials; var names

* fix: handle null case

* feat: resolve_meeting_materials_task
* fix: limit types added to ResolvedMaterial

* feat: resolve meeting materials in order by date

* feat: add meetings_until param

* fix: log&continue if resolving fails on a meeting

* feat: log error message on parse errors
* refactor: move ResolvedMaterial to blobdb app

* fix: undo accidental removal
# Conflicts:
#	ietf/meeting/models.py
* fix: don't use DocHistory to validate revs

The DocHistory records are incomplete and, in particular, -00 revs are
often missing.

* Revert "refactor: get actual rev in _get_materials_doc (#9741)"

This reverts commit 7fd1580

* chore: remove the on-demand resolver api

* chore: fix lint
* refactor: drop .txt from filename_with_rev()

* feat: utilities to populate materials blobs

* feat: store materials for a full meeting as blobs

Plus a bunch of fixup from working with real data.
(Based on meetings 71, 83, and 118, picked arbitrarily)

* chore: update migration

* feat: task to store materials in blobdb

* refactor: reimplement api_retrieve_materials_blob

* fix: update resolving task, fix bugs

* Revert "refactor: drop .txt from filename_with_rev()"

This reverts commit a849d0f.

* chore: fix lint
@jennifer-richards jennifer-richards marked this pull request as ready for review October 23, 2025 20:40
@rjsparks rjsparks merged commit 6412d1e into main Oct 23, 2025
14 of 15 checks passed
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Oct 27, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants