feat!: Switch v2 libraries to Learning Core data models (#34066)
This moves the Content Libraries V2 backend from Blockstore [1] over to Learning Core [2] For high-level overview and rationale of this move, see the Blockstore DEPR [3]. There are several follow-up tasks [4], most notably adding support for static assets in libraries. BREAKING CHANGE: Existing V2 libraries, backed by Blockstore, will stop working. They will continue to be listed in Studio, but their content will be unavailable. They need to be deleted (via Django admin) or manually migrated to Learning Core. We do not expect production sites to be in this situation, as the feature has never left "experimental" status. [1] https://github.com/openedx-unsupported/blockstore [2] https://github.com/openedx/openedx-learning/ [3] https://github.com/openedx/public-engineering/issues/238 [4] https://github.com/openedx/edx-platform/issues/34283
This commit is contained in:
@@ -273,9 +273,9 @@ def find_orgslug_libraryid_pairs() -> Set[Tuple[str, str]]:
|
||||
|
||||
Note that this only considers "version 1" (aka "legacy" or "modulestore-based")
|
||||
content libraries.
|
||||
We do not consider "version 2" (aka "blockstore-based") content libraries,
|
||||
because those require a database-level link to their authoring organization,
|
||||
and thus would not need backfilling via this command.
|
||||
We do not consider "version 2" content libraries, because those require a
|
||||
database-level link to their authoring organization, and thus would not need
|
||||
backfilling via this command.
|
||||
|
||||
Returns: set[tuple[str, str]]
|
||||
"""
|
||||
|
||||
@@ -922,15 +922,14 @@ def _create_metadata(v1_library_key, collection_uuid):
|
||||
library_license = '' # '' = ALL_RIGHTS_RESERVED
|
||||
with atomic():
|
||||
return v2contentlib_api.create_library(
|
||||
collection,
|
||||
library_type,
|
||||
org,
|
||||
slug,
|
||||
title,
|
||||
description,
|
||||
allow_public_learning,
|
||||
allow_public_read,
|
||||
library_license
|
||||
library_license,
|
||||
library_type,
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@ allow users to paste XBlocks that were copied using the staged_content/clipboard
|
||||
APIs.
|
||||
"""
|
||||
import ddt
|
||||
from django.test import LiveServerTestCase
|
||||
from opaque_keys.edx.keys import UsageKey
|
||||
from rest_framework.test import APIClient
|
||||
from organizations.models import Organization
|
||||
@@ -13,9 +12,7 @@ from xmodule.modulestore.tests.django_utils import ModuleStoreTestCase, upload_f
|
||||
from xmodule.modulestore.tests.factories import BlockFactory, CourseFactory, ToyCourseFactory
|
||||
|
||||
from cms.djangoapps.contentstore.utils import reverse_usage_url
|
||||
from openedx.core.lib.blockstore_api.tests.base import BlockstoreAppTestMixin
|
||||
from openedx.core.djangoapps.content_libraries import api as library_api
|
||||
from blockstore.apps import api as blockstore_api
|
||||
|
||||
CLIPBOARD_ENDPOINT = "/api/content-staging/v1/clipboard/"
|
||||
XBLOCK_ENDPOINT = "/xblock/"
|
||||
@@ -214,7 +211,7 @@ class ClipboardPasteTestCase(ModuleStoreTestCase):
|
||||
assert source_pic2_hash != dest_pic2_hash # Because there was a conflict, this file was unchanged.
|
||||
|
||||
|
||||
class ClipboardLibraryContentPasteTestCase(BlockstoreAppTestMixin, LiveServerTestCase, ModuleStoreTestCase):
|
||||
class ClipboardLibraryContentPasteTestCase(ModuleStoreTestCase):
|
||||
"""
|
||||
Test Clipboard Paste functionality with library content
|
||||
"""
|
||||
@@ -229,7 +226,6 @@ class ClipboardLibraryContentPasteTestCase(BlockstoreAppTestMixin, LiveServerTes
|
||||
self.store = modulestore()
|
||||
# Create a content library:
|
||||
library = library_api.create_library(
|
||||
collection_uuid=blockstore_api.create_collection("Collection").uuid,
|
||||
library_type=library_api.COMPLEX,
|
||||
org=Organization.objects.create(name="Test Org", short_name="CL-TEST"),
|
||||
slug="lib",
|
||||
|
||||
Reference in New Issue
Block a user