fix: versioned href for slides URL (#8040)

This commit is contained in:
Jennifer Richards 2024-10-14 12:22:19 -03:00 committed by GitHub
parent 83f5fc8d1a
commit 2d2e879bd1
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 11 additions and 13 deletions

View file

@ -1840,7 +1840,7 @@ def agenda_extract_slide(item):
"id": item.id,
"title": item.title,
"rev": item.rev,
"url": item.get_versionless_href(),
"url": item.get_href(),
"ext": item.file_extension(),
}

View file

@ -481,12 +481,10 @@ class ConferenceManager(Manager):
class SlidesManager(Manager):
"""Interface between Datatracker models and Meetecho API
Note: The URL we send comes from get_versionless_href(). This should match what we use as the
URL in api_get_session_materials(). Additionally, it _must_ give the right result for a Document
instance that has not yet been persisted to the database. This is because upload_session_slides()
(as of 2024-03-07) SessionPresentations before saving its updated Documents. This means, for
example, using get_absolute_url() will cause bugs. (We should refactor upload_session_slides() to
avoid this requirement.)
Note: the URL sent for a slide deck comes from DocumentInfo.get_href() and includes the revision
of the slides being sent. Be sure that 1) the URL matches what api_get_session_materials() returns
for the slides; and 2) the URL is valid if it is fetched immediately - possibly even before the call
to SlidesManager.add() or send_update() returns.
"""
def __init__(self, api_config):
@ -521,7 +519,7 @@ class SlidesManager(Manager):
deck={
"id": slides.pk,
"title": slides.title,
"url": slides.get_versionless_href(), # see above note re: get_versionless_href()
"url": slides.get_href(),
"rev": slides.rev,
"order": order,
}
@ -575,7 +573,7 @@ class SlidesManager(Manager):
{
"id": deck.document.pk,
"title": deck.document.title,
"url": deck.document.get_versionless_href(), # see note above re: get_versionless_href()
"url": deck.document.get_href(),
"rev": deck.document.rev,
"order": deck.order,
}

View file

@ -558,7 +558,7 @@ class SlidesManagerTests(TestCase):
deck={
"id": slides_doc.pk,
"title": slides_doc.title,
"url": slides_doc.get_versionless_href(),
"url": slides_doc.get_href(session.meeting),
"rev": slides_doc.rev,
"order": 13,
},
@ -597,7 +597,7 @@ class SlidesManagerTests(TestCase):
{
"id": slides_doc.pk,
"title": slides_doc.title,
"url": slides_doc.get_versionless_href(),
"url": slides_doc.get_href(session.meeting),
"rev": slides_doc.rev,
"order": 1,
},
@ -635,7 +635,7 @@ class SlidesManagerTests(TestCase):
deck={
"id": slides_doc.pk,
"title": slides_doc.title,
"url": slides_doc.get_versionless_href(),
"url": slides_doc.get_href(slides.session.meeting),
"rev": slides_doc.rev,
"order": 23,
},
@ -660,7 +660,7 @@ class SlidesManagerTests(TestCase):
{
"id": slides.document_id,
"title": slides.document.title,
"url": slides.document.get_versionless_href(),
"url": slides.document.get_href(slides.session.meeting),
"rev": slides.document.rev,
"order": 0,
}