This introdues the idea of "upstream" and "downstream" content, where downstreams (like course components) can pull content updates from upstreams (like learning core-backed content library blocks). This supports the upcoming Content Libraries Relaunch Beta for Sumac. New features include: * A new XBlockMixin: UpstreamSyncMixin. * A new CMS Python API: cms.lib.xblock.upstream_sync * A new CMS JSON API: /api/contentstore/v2/downstreams * A temporary, very basic UI for syncing from Content Library blocks Implements: https://github.com/kdmccormick/edx-platform/blob/kdmccormick/upstream-proto/docs/decisions/0020-upstream-block.rst Co-authored-by: Braden MacDonald <braden@opencraft.com>
32 lines
818 B
Python
32 lines
818 B
Python
"""Contenstore API v2 URLs."""
|
|
|
|
from django.conf import settings
|
|
from django.urls import path, re_path
|
|
|
|
from cms.djangoapps.contentstore.rest_api.v2.views import home, downstreams
|
|
app_name = "v2"
|
|
|
|
urlpatterns = [
|
|
path(
|
|
"home/courses",
|
|
home.HomePageCoursesViewV2.as_view(),
|
|
name="courses",
|
|
),
|
|
# TODO: Potential future path.
|
|
# re_path(
|
|
# fr'^downstreams/$',
|
|
# downstreams.DownstreamsListView.as_view(),
|
|
# name="downstreams_list",
|
|
# ),
|
|
re_path(
|
|
fr'^downstreams/{settings.USAGE_KEY_PATTERN}$',
|
|
downstreams.DownstreamView.as_view(),
|
|
name="downstream"
|
|
),
|
|
re_path(
|
|
fr'^downstreams/{settings.USAGE_KEY_PATTERN}/sync$',
|
|
downstreams.SyncFromUpstreamView.as_view(),
|
|
name="sync_from_upstream"
|
|
),
|
|
]
|