← 返回首页
fix: resolve procmaterials when uploaded (#10693) · ietf-tools/datatracker@73132b3 · GitHub
Skip to content

Navigation Menu

Toggle navigation
Sign in
Appearance settings
Search or jump to...

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
Resetting focus

Commit 73132b3

Browse files
fix: resolve procmaterials when uploaded (#10693)
* fix: resolve procmaterials when uploaded * fix: avoid leaving stale ResolvedMaterial
1 parent 608a5b7 commit 73132b3

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

‎ietf/meeting/utils.py‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1025,9 +1025,18 @@ def resolve_materials_for_one_meeting(meeting: Meeting):
10251025
)
10261026

10271027
def resolve_uploaded_material(meeting: Meeting, doc: Document):
1028-
resolved = []
1028+
resolved: list[ResolvedMaterial] = []
1029+
remove = ResolvedMaterial.objects.none()
10291030
blob = resolve_one_material(doc, rev=None, ext=None)
1030-
if blob is not None:
1031+
if blob is None:
1032+
# Versionless file does not exist. Remove the versionless ResolvedMaterial
1033+
# if it existed. This is to avoid leaving behind a stale link to a replaced
1034+
# version. This comes up e.g. if a ProceedingsMaterial is changed from having
1035+
# an uploaded file to being an external URL.
1036+
remove = ResolvedMaterial.objects.filter(
1037+
name=doc.name, meeting_number=meeting.number
1038+
)
1039+
else:
10311040
resolved.append(
10321041
ResolvedMaterial(
10331042
name=doc.name,
@@ -1047,12 +1056,15 @@ def resolve_uploaded_material(meeting: Meeting, doc: Document):
10471056
blob=blob.name,
10481057
)
10491058
)
1059+
# Create the new record(s)
10501060
ResolvedMaterial.objects.bulk_create(
10511061
resolved,
10521062
update_conflicts=True,
10531063
unique_fields=["name", "meeting_number"],
10541064
update_fields=["bucket", "blob"],
10551065
)
1066+
# and remove one if necessary (will be a none() queryset if not)
1067+
remove.delete()
10561068

10571069

10581070
def store_blob_for_one_material_file(doc: Document, rev: str, filepath: Path):

‎ietf/meeting/views_proceedings.py‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
from ietf.meeting.models import Meeting, MeetingHost
1515
from ietf.meeting.helpers import get_meeting
1616
from ietf.name.models import ProceedingsMaterialTypeName
17-
from ietf.meeting.utils import handle_upload_file
17+
from ietf.meeting.utils import handle_upload_file, resolve_uploaded_material
1818
from ietf.utils.text import xslugify
1919

2020
class UploadProceedingsMaterialForm(FileUploadForm):
@@ -150,7 +150,7 @@ def save_proceedings_material_doc(meeting, material_type, title, request, file=N
150150

151151
if events:
152152
doc.save_with_history(events)
153-
153+
resolve_uploaded_material(meeting, doc)
154154
return doc
155155

156156

0 commit comments

Comments
 (0)

Footer

© 2026 GitHub, Inc.