feat: support unit preview in learning MFE (#35747)
* feat: update preview url to direct to mfe * fix: use url builder instead of string formatter * fix: url redirect for never published units * fix: remove 404 error when not a preview or staff * feat: update sequence metadata to allow draft branch
This commit is contained in:
@@ -117,7 +117,7 @@ class HomePageCoursesViewTest(CourseTestCase):
|
||||
"courses": [{
|
||||
"course_key": course_id,
|
||||
"display_name": self.course.display_name,
|
||||
"lms_link": f'//{settings.LMS_BASE}/courses/{course_id}/jump_to/{self.course.location}',
|
||||
"lms_link": f'{settings.LMS_ROOT_URL}/courses/{course_id}/jump_to/{self.course.location}',
|
||||
"number": self.course.number,
|
||||
"org": self.course.org,
|
||||
"rerun_link": f'/course_rerun/{course_id}',
|
||||
@@ -144,7 +144,7 @@ class HomePageCoursesViewTest(CourseTestCase):
|
||||
OrderedDict([
|
||||
("course_key", course_id),
|
||||
("display_name", self.course.display_name),
|
||||
("lms_link", f'//{settings.LMS_BASE}/courses/{course_id}/jump_to/{self.course.location}'),
|
||||
("lms_link", f'{settings.LMS_ROOT_URL}/courses/{course_id}/jump_to/{self.course.location}'),
|
||||
("number", self.course.number),
|
||||
("org", self.course.org),
|
||||
("rerun_link", f'/course_rerun/{course_id}'),
|
||||
|
||||
@@ -62,7 +62,7 @@ class HomePageCoursesViewV2Test(CourseTestCase):
|
||||
OrderedDict([
|
||||
("course_key", course_id),
|
||||
("display_name", self.course.display_name),
|
||||
("lms_link", f'//{settings.LMS_BASE}/courses/{course_id}/jump_to/{self.course.location}'),
|
||||
("lms_link", f'{settings.LMS_ROOT_URL}/courses/{course_id}/jump_to/{self.course.location}'),
|
||||
("cms_link", f'//{settings.CMS_BASE}{reverse_course_url("course_handler", self.course.id)}'),
|
||||
("number", self.course.number),
|
||||
("org", self.course.org),
|
||||
@@ -76,7 +76,7 @@ class HomePageCoursesViewV2Test(CourseTestCase):
|
||||
("display_name", self.archived_course.display_name),
|
||||
(
|
||||
"lms_link",
|
||||
f'//{settings.LMS_BASE}/courses/{archived_course_id}/jump_to/{self.archived_course.location}'
|
||||
f'{settings.LMS_ROOT_URL}/courses/{archived_course_id}/jump_to/{self.archived_course.location}'
|
||||
),
|
||||
(
|
||||
"cms_link",
|
||||
@@ -139,7 +139,7 @@ class HomePageCoursesViewV2Test(CourseTestCase):
|
||||
self.assertEqual(response.data["results"]["courses"], [OrderedDict([
|
||||
("course_key", str(self.course.id)),
|
||||
("display_name", self.course.display_name),
|
||||
("lms_link", f'//{settings.LMS_BASE}/courses/{str(self.course.id)}/jump_to/{self.course.location}'),
|
||||
("lms_link", f'{settings.LMS_ROOT_URL}/courses/{str(self.course.id)}/jump_to/{self.course.location}'),
|
||||
("cms_link", f'//{settings.CMS_BASE}{reverse_course_url("course_handler", self.course.id)}'),
|
||||
("number", self.course.number),
|
||||
("org", self.course.org),
|
||||
@@ -164,7 +164,11 @@ class HomePageCoursesViewV2Test(CourseTestCase):
|
||||
("display_name", self.archived_course.display_name),
|
||||
(
|
||||
"lms_link",
|
||||
f'//{settings.LMS_BASE}/courses/{str(self.archived_course.id)}/jump_to/{self.archived_course.location}',
|
||||
'{url_root}/courses/{course_id}/jump_to/{location}'.format(
|
||||
url_root=settings.LMS_ROOT_URL,
|
||||
course_id=str(self.archived_course.id),
|
||||
location=self.archived_course.location
|
||||
),
|
||||
),
|
||||
("cms_link", f'//{settings.CMS_BASE}{reverse_course_url("course_handler", self.archived_course.id)}'),
|
||||
("number", self.archived_course.number),
|
||||
@@ -190,7 +194,11 @@ class HomePageCoursesViewV2Test(CourseTestCase):
|
||||
("display_name", self.archived_course.display_name),
|
||||
(
|
||||
"lms_link",
|
||||
f'//{settings.LMS_BASE}/courses/{str(self.archived_course.id)}/jump_to/{self.archived_course.location}',
|
||||
'{url_root}/courses/{course_id}/jump_to/{location}'.format(
|
||||
url_root=settings.LMS_ROOT_URL,
|
||||
course_id=str(self.archived_course.id),
|
||||
location=self.archived_course.location
|
||||
),
|
||||
),
|
||||
("cms_link", f'//{settings.CMS_BASE}{reverse_course_url("course_handler", self.archived_course.id)}'),
|
||||
("number", self.archived_course.number),
|
||||
|
||||
@@ -9,7 +9,7 @@ import re
|
||||
from collections import defaultdict
|
||||
from contextlib import contextmanager
|
||||
from datetime import datetime, timezone
|
||||
from urllib.parse import quote_plus
|
||||
from urllib.parse import quote_plus, urlencode, urlunparse, urlparse
|
||||
from uuid import uuid4
|
||||
|
||||
from bs4 import BeautifulSoup
|
||||
@@ -193,31 +193,30 @@ def get_lms_link_for_item(location, preview=False):
|
||||
"""
|
||||
assert isinstance(location, UsageKey)
|
||||
|
||||
# checks LMS_BASE value in site configuration for the given course_org_filter(org)
|
||||
# if not found returns settings.LMS_BASE
|
||||
# checks LMS_ROOT_URL value in site configuration for the given course_org_filter(org)
|
||||
# if not found returns settings.LMS_ROOT_URL
|
||||
lms_base = SiteConfiguration.get_value_for_org(
|
||||
location.org,
|
||||
"LMS_BASE",
|
||||
settings.LMS_BASE
|
||||
"LMS_ROOT_URL",
|
||||
settings.LMS_ROOT_URL
|
||||
)
|
||||
query_string = ''
|
||||
|
||||
if lms_base is None:
|
||||
return None
|
||||
|
||||
if preview:
|
||||
# checks PREVIEW_LMS_BASE value in site configuration for the given course_org_filter(org)
|
||||
# if not found returns settings.FEATURES.get('PREVIEW_LMS_BASE')
|
||||
lms_base = SiteConfiguration.get_value_for_org(
|
||||
location.org,
|
||||
"PREVIEW_LMS_BASE",
|
||||
settings.FEATURES.get('PREVIEW_LMS_BASE')
|
||||
)
|
||||
params = {'preview': '1'}
|
||||
query_string = urlencode(params)
|
||||
|
||||
return "//{lms_base}/courses/{course_key}/jump_to/{location}".format(
|
||||
lms_base=lms_base,
|
||||
url_parts = list(urlparse(lms_base))
|
||||
url_parts[2] = '/courses/{course_key}/jump_to/{location}'.format(
|
||||
course_key=str(location.course_key),
|
||||
location=str(location),
|
||||
)
|
||||
url_parts[4] = query_string
|
||||
|
||||
return urlunparse(url_parts)
|
||||
|
||||
|
||||
def get_lms_link_for_certificate_web_view(course_key, mode):
|
||||
|
||||
Reference in New Issue
Block a user