Skip to content

Commit f0b40bb

Browse files
committed
refactor: update openedx_content contents -> media
Update our calls to the openedx_content API to reflect 0.35.0's shift in terminology from "contents" to "media".
1 parent e5ebde8 commit f0b40bb

22 files changed

Lines changed: 84 additions & 84 deletions

File tree

cms/djangoapps/modulestore_migrator/tasks.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ def _import_assets(migration: models.ModulestoreMigration) -> dict[str, int]:
296296
filename = os.path.basename(old_path)
297297
media_type_str = mimetypes.guess_type(filename)[0] or "application/octet-stream"
298298
media_type = content_api.get_or_create_media_type(media_type_str)
299-
content_by_filename[filename] = content_api.get_or_create_file_content(
299+
content_by_filename[filename] = content_api.get_or_create_file_media(
300300
migration.target_id,
301301
media_type.id,
302302
data=file_data,
@@ -969,13 +969,13 @@ def _migrate_component(
969969
# If component existed and was deleted or we have to replace the current version
970970
# Create the new component version for it
971971
component_version = libraries_api.set_library_block_olx(target_key, new_olx_str=olx)
972-
for filename, content_pk in context.content_by_filename.items():
972+
for filename, media_pk in context.content_by_filename.items():
973973
filename_no_ext, _ = os.path.splitext(filename)
974974
if filename_no_ext not in olx:
975975
continue
976976
new_path = f"static/{filename}"
977-
content_api.create_component_version_content(
978-
component_version.pk, content_pk, key=new_path
977+
content_api.create_component_version_media(
978+
component_version.pk, media_pk, key=new_path
979979
)
980980

981981
# Publish the component

cms/djangoapps/modulestore_migrator/tests/test_tasks.py

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ def test_migrate_component_with_static_content(self):
405405
olx = '<problem display_name="Test Problem"><p>See image: test_image.png</p></problem>'
406406

407407
media_type = content_api.get_or_create_media_type("image/png")
408-
test_content = content_api.get_or_create_file_content(
408+
test_content = content_api.get_or_create_file_media(
409409
self.learning_package.id,
410410
media_type.id,
411411
data=b"fake_image_data",
@@ -423,7 +423,7 @@ def test_migrate_component_with_static_content(self):
423423
self.assertIsNotNone(result)
424424
self.assertIsNone(reason)
425425

426-
component_content = result.componentversion.componentversioncontent_set.filter(
426+
component_content = result.componentversion.componentversionmedia_set.filter(
427427
key="static/test_image.png"
428428
).first()
429429
self.assertIsNotNone(component_content)
@@ -638,13 +638,13 @@ def test_migrate_component_content_filename_not_in_olx(self):
638638
olx = '<problem display_name="Test Problem"><p>See image: referenced.png</p></problem>'
639639

640640
media_type = content_api.get_or_create_media_type("image/png")
641-
referenced_content = content_api.get_or_create_file_content(
641+
referenced_content = content_api.get_or_create_file_media(
642642
self.learning_package.id,
643643
media_type.id,
644644
data=b"referenced_image_data",
645645
created=timezone.now(),
646646
)
647-
unreferenced_content = content_api.get_or_create_file_content(
647+
unreferenced_content = content_api.get_or_create_file_media(
648648
self.learning_package.id,
649649
media_type.id,
650650
data=b"unreferenced_image_data",
@@ -670,12 +670,12 @@ def test_migrate_component_content_filename_not_in_olx(self):
670670
self.assertIsNone(reason)
671671

672672
referenced_content_exists = (
673-
result.componentversion.componentversioncontent_set.filter(
673+
result.componentversion.componentversionmedia_set.filter(
674674
key="static/referenced.png"
675675
).exists()
676676
)
677677
unreferenced_content_exists = (
678-
result.componentversion.componentversioncontent_set.filter(
678+
result.componentversion.componentversionmedia_set.filter(
679679
key="static/unreferenced.png"
680680
).exists()
681681
)
@@ -722,7 +722,7 @@ def test_migrate_container_creates_new_container(self):
722722
)
723723
child_version_1 = content_api.create_next_component_version(
724724
child_component_1.pk,
725-
content_to_replace={},
725+
media_to_replace={},
726726
created=timezone.now(),
727727
created_by=self.user.id,
728728
)
@@ -738,7 +738,7 @@ def test_migrate_container_creates_new_container(self):
738738
)
739739
child_version_2 = content_api.create_next_component_version(
740740
child_component_2.pk,
741-
content_to_replace={},
741+
media_to_replace={},
742742
created=timezone.now(),
743743
created_by=self.user.id,
744744
)
@@ -910,7 +910,7 @@ def test_migrate_container_preserves_child_order(self):
910910
)
911911
child_version = content_api.create_next_component_version(
912912
child_component.pk,
913-
content_to_replace={},
913+
media_to_replace={},
914914
created=timezone.now(),
915915
created_by=self.user.id,
916916
)
@@ -950,7 +950,7 @@ def test_migrate_container_with_mixed_child_types(self):
950950
)
951951
problem_version = content_api.create_next_component_version(
952952
problem_component.pk,
953-
content_to_replace={},
953+
media_to_replace={},
954954
created=timezone.now(),
955955
created_by=self.user.id,
956956
)
@@ -966,7 +966,7 @@ def test_migrate_container_with_mixed_child_types(self):
966966
)
967967
html_version = content_api.create_next_component_version(
968968
html_component.pk,
969-
content_to_replace={},
969+
media_to_replace={},
970970
created=timezone.now(),
971971
created_by=self.user.id,
972972
)
@@ -982,7 +982,7 @@ def test_migrate_container_with_mixed_child_types(self):
982982
)
983983
video_version = content_api.create_next_component_version(
984984
video_component.pk,
985-
content_to_replace={},
985+
media_to_replace={},
986986
created=timezone.now(),
987987
created_by=self.user.id,
988988
)

openedx/core/djangoapps/content_libraries/api/blocks.py

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ def set_library_block_olx(usage_key: LibraryUsageLocatorV2, new_olx_str: str) ->
238238
now = datetime.now(tz=timezone.utc)
239239

240240
with transaction.atomic():
241-
new_content = content_api.get_or_create_text_content(
241+
new_content = content_api.get_or_create_text_media(
242242
component.learning_package_id,
243243
get_or_create_olx_media_type(usage_key.block_type).id,
244244
text=new_olx_str,
@@ -247,7 +247,7 @@ def set_library_block_olx(usage_key: LibraryUsageLocatorV2, new_olx_str: str) ->
247247
new_component_version = content_api.create_next_component_version(
248248
component.pk,
249249
title=new_title,
250-
content_to_replace={
250+
media_to_replace={
251251
'block.xml': new_content.pk,
252252
},
253253
created=now,
@@ -481,13 +481,13 @@ def _import_staged_block(
481481
media_type_str = "application/octet-stream"
482482

483483
media_type = content_api.get_or_create_media_type(media_type_str)
484-
content = content_api.get_or_create_file_content(
484+
content = content_api.get_or_create_file_media(
485485
learning_package.id,
486486
media_type.id,
487487
data=file_data,
488488
created=now,
489489
)
490-
content_api.create_component_version_content(
490+
content_api.create_component_version_media(
491491
component_version.pk,
492492
content.id,
493493
key=filename,
@@ -833,30 +833,30 @@ def get_library_block_static_asset_files(usage_key: LibraryUsageLocatorV2) -> li
833833
if component_version is None:
834834
return []
835835

836-
# cvc = the ComponentVersionContent through table
837-
cvc_set = (
836+
# cvm = the ComponentVersionMedia through table
837+
cvm_set = (
838838
component_version
839-
.componentversioncontent_set
840-
.filter(content__has_file=True)
839+
.componentversionmedia_set
840+
.filter(media__has_file=True)
841841
.order_by('key')
842-
.select_related('content')
842+
.select_related('media')
843843
)
844844

845845
site_root_url = get_xblock_app_config().get_site_root_url()
846846

847847
return [
848848
LibraryXBlockStaticFile(
849-
path=cvc.key,
850-
size=cvc.content.size,
849+
path=cvm.key,
850+
size=cvm.media.size,
851851
url=site_root_url + reverse(
852852
'content_libraries:library-assets',
853853
kwargs={
854854
'component_version_uuid': component_version.uuid,
855-
'asset_path': cvc.key,
855+
'asset_path': cvm.key,
856856
}
857857
),
858858
)
859-
for cvc in cvc_set
859+
for cvm in cvm_set
860860
]
861861

862862

@@ -897,7 +897,7 @@ def add_library_block_static_asset_file(
897897
with transaction.atomic():
898898
component_version = content_api.create_next_component_version(
899899
component.pk,
900-
content_to_replace={file_path: file_content},
900+
media_to_replace={file_path: file_content},
901901
created=datetime.now(tz=timezone.utc),
902902
created_by=user.id if user else None,
903903
)
@@ -945,7 +945,7 @@ def delete_library_block_static_asset_file(usage_key, file_path, user=None):
945945
with transaction.atomic():
946946
component_version = content_api.create_next_component_version(
947947
component.pk,
948-
content_to_replace={file_path: None},
948+
media_to_replace={file_path: None},
949949
created=now,
950950
created_by=user.id if user else None,
951951
)
@@ -1038,13 +1038,13 @@ def _create_component_for_block(
10381038
created_by=user_id,
10391039
can_stand_alone=can_stand_alone,
10401040
)
1041-
content = content_api.get_or_create_text_content(
1041+
content = content_api.get_or_create_text_media(
10421042
learning_package.id,
10431043
get_or_create_olx_media_type(usage_key.block_type).id,
10441044
text=xml_text,
10451045
created=now,
10461046
)
1047-
content_api.create_component_version_content(
1047+
content_api.create_component_version_media(
10481048
component_version.pk,
10491049
content.id,
10501050
key="block.xml",

openedx/core/djangoapps/content_libraries/rest_api/blocks.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -423,8 +423,8 @@ def get_component_version_asset(request, component_version_uuid, asset_path):
423423
return redirect_response
424424

425425
# If we got here, we know that the asset exists and it's okay to download.
426-
cv_content = component_version.componentversioncontent_set.get(key=asset_path)
427-
content = cv_content.content
426+
cv_media = component_version.componentversionmedia_set.get(key=asset_path)
427+
media = cv_media.media
428428

429429
# Delete the re-direct part of the response headers. We'll copy the rest.
430430
headers = redirect_response.headers
@@ -433,7 +433,7 @@ def get_component_version_asset(request, component_version_uuid, asset_path):
433433
# We need to set the content size header manually because this is a
434434
# streaming response. It's not included in the redirect headers because it's
435435
# not needed there (the reverse-proxy would have direct access to the file).
436-
headers['Content-Length'] = content.size
436+
headers['Content-Length'] = media.size
437437

438438
if request.method == "HEAD":
439439
return HttpResponse(headers=headers)
@@ -442,7 +442,7 @@ def get_component_version_asset(request, component_version_uuid, asset_path):
442442
# offsets or anything fancy, because we don't expect to run this view at
443443
# LMS-scale.
444444
return StreamingHttpResponse(
445-
content.read_file().chunks(),
445+
media.read_file().chunks(),
446446
headers=redirect_response.headers,
447447
)
448448

openedx/core/djangoapps/video_config/transcripts_utils.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,15 +1017,15 @@ def get_transcript_from_openedx_content(video_block, language, output_format, tr
10171017

10181018
# TODO: There should be a openedx_content API call for this:
10191019
try:
1020-
content = (
1020+
media = (
10211021
component_version
1022-
.componentversioncontent_set
1023-
.filter(content__has_file=True)
1024-
.select_related('content')
1022+
.componentversionmedia_set
1023+
.filter(media__has_file=True)
1024+
.select_related('media')
10251025
.get(key=file_path)
1026-
.content
1026+
.media
10271027
)
1028-
data = content.read_file().read()
1028+
data = media.read_file().read()
10291029
except ObjectDoesNotExist as exc:
10301030
raise NotFoundError(
10311031
f"No file {file_path} found for {usage_key} "

openedx/core/djangoapps/xblock/api.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -235,9 +235,9 @@ def get_block_olx(
235235
raise NoSuchUsage(usage_key)
236236

237237
# TODO: we should probably make a method on ComponentVersion that returns
238-
# a content based on the name. Accessing by componentversioncontent__key is
238+
# a content based on the name. Accessing by componentversionmedia__key is
239239
# awkward.
240-
content = component_version.contents.get(componentversioncontent__key="block.xml")
240+
content = component_version.media.get(componentversionmedia__key="block.xml")
241241

242242
return content.text
243243

openedx/core/djangoapps/xblock/runtime/openedx_content_runtime.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -193,8 +193,8 @@ def get_block(self, usage_key, for_parent=None, *, version: int | LatestVersion
193193
if component_version is None:
194194
raise NoSuchUsage(usage_key)
195195

196-
content = component_version.contents.get(
197-
componentversioncontent__key="block.xml"
196+
content = component_version.media.get(
197+
componentversionmedia__key="block.xml"
198198
)
199199
xml_node = etree.fromstring(content.text)
200200
block_type = usage_key.block_type
@@ -248,22 +248,22 @@ def get_block_assets(self, block, fetch_asset_data):
248248
"""
249249
component_version = self.get_component_version_from_block(block)
250250

251-
# cvc = the ComponentVersionContent through-table
252-
cvc_list = (
251+
# cvm = the ComponentVersionMedia through-table
252+
cvm_list = (
253253
component_version
254-
.componentversioncontent_set
255-
.filter(content__has_file=True)
256-
.select_related('content')
254+
.componentversionmedia_set
255+
.filter(media__has_file=True)
256+
.select_related('media')
257257
.order_by('key')
258258
)
259259

260260
return [
261261
StaticFile(
262-
name=cvc.key,
263-
url=self._absolute_url_for_asset(component_version, cvc.key),
264-
data=cvc.content.read_file().read() if fetch_asset_data else None,
262+
name=cvm.key,
263+
url=self._absolute_url_for_asset(component_version, cvm.key),
264+
data=cvm.media.read_file().read() if fetch_asset_data else None,
265265
)
266-
for cvc in cvc_list
266+
for cvm in cvm_list
267267
]
268268

269269
def save_block(self, block):
@@ -298,7 +298,7 @@ def save_block(self, block):
298298
block_media_type = content_api.get_or_create_media_type(
299299
f"application/vnd.openedx.xblock.v1.{usage_key.block_type}+xml"
300300
)
301-
content = content_api.get_or_create_text_content(
301+
media = content_api.get_or_create_text_media(
302302
component.learning_package_id,
303303
block_media_type.id,
304304
text=serialized.olx_str,
@@ -307,8 +307,8 @@ def save_block(self, block):
307307
content_api.create_next_component_version(
308308
component.pk,
309309
title=block.display_name,
310-
content_to_replace={
311-
"block.xml": content.id,
310+
media_to_replace={
311+
"block.xml": media.id,
312312
},
313313
created=now,
314314
created_by=self.user.id if self.user else None
@@ -446,21 +446,21 @@ def _lookup_asset_url(self, block: XBlock, asset_path: str) -> str | None:
446446
component_version = self.get_component_version_from_block(block)
447447

448448
try:
449-
content = (
449+
media = (
450450
component_version
451-
.componentversioncontent_set
452-
.filter(content__has_file=True)
451+
.componentversionmedia_set
452+
.filter(media__has_file=True)
453453
.get(key=f"static/{asset_path}")
454454
)
455455
except ObjectDoesNotExist:
456456
try:
457457
# Retry with unquoted path. We don't always unquote because it would not
458458
# be backwards-compatible, but we need to try both.
459459
asset_path = unquote(asset_path)
460-
content = (
460+
media = (
461461
component_version
462-
.componentversioncontent_set
463-
.filter(content__has_file=True)
462+
.componentversionmedia_set
463+
.filter(media__has_file=True)
464464
.get(key=f"static/{asset_path}")
465465
)
466466
except ObjectDoesNotExist:

requirements/constraints.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ numpy<2.0.0
6565
# breaking changes which openedx-core devs want to roll out manually. New patch versions
6666
# are OK to accept automatically.
6767
# Issue for unpinning: https://github.com/openedx/edx-platform/issues/35269
68-
openedx-core<0.35
68+
openedx-core<0.36
6969

7070
# Date: 2023-11-29
7171
# Open AI version 1.0.0 dropped support for openai.ChatCompletion which is currently in use in enterprise.

0 commit comments

Comments
 (0)