From 7ea9714a3385123253304da340c23bfad97e2cd2 Mon Sep 17 00:00:00 2001 From: alangsto <46360176+alangsto@users.noreply.github.com> Date: Mon, 13 Jul 2020 16:10:48 -0400 Subject: [PATCH] Updated URLs to course-authoring MFE (#24468) * updated urls to course-authoring MFE * updates for requested changes * updated for pylint errors --- cms/djangoapps/contentstore/utils.py | 16 ++++++++++++++++ .../contentstore/views/certificates.py | 11 +++++++++-- cms/djangoapps/contentstore/views/course.py | 18 +++++++++++++++++- cms/envs/test.py | 2 +- cms/templates/certificates.html | 10 +++++----- cms/templates/group_configurations.html | 10 +++++----- cms/templates/settings.html | 10 +++++----- cms/templates/settings_advanced.html | 10 +++++----- cms/templates/settings_graders.html | 10 +++++----- cms/templates/widgets/header.html | 7 ++----- 10 files changed, 70 insertions(+), 34 deletions(-) diff --git a/cms/djangoapps/contentstore/utils.py b/cms/djangoapps/contentstore/utils.py index 273301e9b8..331a67a493 100644 --- a/cms/djangoapps/contentstore/utils.py +++ b/cms/djangoapps/contentstore/utils.py @@ -20,6 +20,7 @@ from six import text_type from openedx.core.djangoapps.django_comment_common.models import assign_default_role from openedx.core.djangoapps.django_comment_common.utils import seed_permissions_roles from openedx.core.djangoapps.site_configuration.models import SiteConfiguration +from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers from openedx.features.content_type_gating.models import ContentTypeGatingConfig from openedx.features.content_type_gating.partitions import CONTENT_TYPE_GATING_SCHEME from student import auth @@ -158,6 +159,21 @@ def get_lms_link_for_certificate_web_view(user_id, course_key, mode): ) +def get_proctored_exam_settings_url(course_module): + """ + Gets course authoring microfrontend URL for links to proctored exam settings page + """ + course_authoring_microfrontend_url = '' + + if settings.FEATURES.get('ENABLE_EXAM_SETTINGS_HTML_VIEW'): + course_authoring_microfrontend_url = configuration_helpers.get_value_for_org( + course_module.location.org, + 'COURSE_AUTHORING_MICROFRONTEND_URL', + settings.COURSE_AUTHORING_MICROFRONTEND_URL + ) + return course_authoring_microfrontend_url + + # pylint: disable=invalid-name def is_currently_visible_to_students(xblock): """ diff --git a/cms/djangoapps/contentstore/views/certificates.py b/cms/djangoapps/contentstore/views/certificates.py index cb17627255..3fab55c56d 100644 --- a/cms/djangoapps/contentstore/views/certificates.py +++ b/cms/djangoapps/contentstore/views/certificates.py @@ -39,7 +39,11 @@ from opaque_keys import InvalidKeyError from opaque_keys.edx.keys import AssetKey, CourseKey from six import text_type -from contentstore.utils import get_lms_link_for_certificate_web_view, reverse_course_url +from contentstore.utils import ( + get_lms_link_for_certificate_web_view, + reverse_course_url, + get_proctored_exam_settings_url +) from contentstore.views.assets import delete_asset from contentstore.views.exception import AssetNotFoundException from course_modes.models import CourseMode @@ -416,6 +420,8 @@ def certificates_list_handler(request, course_key_string): is_active, certificates = CertificateManager.is_activated(course) + course_authoring_microfrontend_url = get_proctored_exam_settings_url(course) + return render_to_response('certificates.html', { 'context_course': course, 'certificate_url': certificate_url, @@ -427,7 +433,8 @@ def certificates_list_handler(request, course_key_string): 'certificate_web_view_url': certificate_web_view_url, 'is_active': is_active, 'is_global_staff': GlobalStaff().has_user(request.user), - 'certificate_activation_handler_url': activation_handler_url + 'certificate_activation_handler_url': activation_handler_url, + 'course_authoring_microfrontend_url': course_authoring_microfrontend_url, }) elif "application/json" in request.META.get('HTTP_ACCEPT'): # Retrieve the list of certificates for the specified course diff --git a/cms/djangoapps/contentstore/views/course.py b/cms/djangoapps/contentstore/views/course.py index dd541849d6..bee4736d5e 100644 --- a/cms/djangoapps/contentstore/views/course.py +++ b/cms/djangoapps/contentstore/views/course.py @@ -43,6 +43,7 @@ from contentstore.tasks import rerun_course as rerun_course_task from contentstore.utils import ( add_instructor, get_lms_link_for_item, + get_proctored_exam_settings_url, initialize_permissions, remove_all_instructors, reverse_course_url, @@ -653,6 +654,8 @@ def course_index(request, course_key): settings.FEATURES.get('FRONTEND_APP_PUBLISHER_URL', False) ) + course_authoring_microfrontend_url = get_proctored_exam_settings_url(course_module) + return render_to_response('course_outline.html', { 'language_code': request.LANGUAGE_CODE, 'context_course': course_module, @@ -673,6 +676,7 @@ def course_index(request, course_key): }, ) if current_action else None, 'frontend_app_publisher_url': frontend_app_publisher_url, + 'course_authoring_microfrontend_url': course_authoring_microfrontend_url, }) @@ -1082,6 +1086,8 @@ def settings_handler(request, course_key_string): upgrade_deadline = (verified_mode and verified_mode.expiration_datetime and verified_mode.expiration_datetime.isoformat()) + course_authoring_microfrontend_url = get_proctored_exam_settings_url(course_module) + settings_context = { 'context_course': course_module, 'course_locator': course_key, @@ -1105,6 +1111,7 @@ def settings_handler(request, course_key_string): 'is_entrance_exams_enabled': is_entrance_exams_enabled(), 'enable_extended_course_details': enable_extended_course_details, 'upgrade_deadline': upgrade_deadline, + 'course_authoring_microfrontend_url': course_authoring_microfrontend_url, } if is_prerequisite_courses_enabled(): courses, in_process_course_actions = get_courses_accessible_to_user(request) @@ -1219,12 +1226,15 @@ def grading_handler(request, course_key_string, grader_index=None): if 'text/html' in request.META.get('HTTP_ACCEPT', '') and request.method == 'GET': course_details = CourseGradingModel.fetch(course_key) + course_authoring_microfrontend_url = get_proctored_exam_settings_url(course_module) + return render_to_response('settings_graders.html', { 'context_course': course_module, 'course_locator': course_key, 'course_details': course_details, 'grading_url': reverse_course_url('grading_handler', course_key), 'is_credit_course': is_credit_course(course_key), + 'course_authoring_microfrontend_url': course_authoring_microfrontend_url, }) elif 'application/json' in request.META.get('HTTP_ACCEPT', ''): if request.method == 'GET': @@ -1322,11 +1332,14 @@ def advanced_settings_handler(request, course_key_string): settings.FEATURES.get('ENABLE_PUBLISHER', False) ) + course_authoring_microfrontend_url = get_proctored_exam_settings_url(course_module) + return render_to_response('settings_advanced.html', { 'context_course': course_module, 'advanced_dict': advanced_dict, 'advanced_settings_url': reverse_course_url('advanced_settings_handler', course_key), 'publisher_enabled': publisher_enabled, + 'course_authoring_microfrontend_url': course_authoring_microfrontend_url, }) elif 'application/json' in request.META.get('HTTP_ACCEPT', ''): @@ -1671,6 +1684,8 @@ def group_configurations_list_handler(request, course_key_string): if not has_content_groups: displayable_partitions.append(GroupConfiguration.get_or_create_content_group(store, course)) + course_authoring_microfrontend_url = get_proctored_exam_settings_url(course) + return render_to_response('group_configurations.html', { 'context_course': course, 'group_configuration_url': group_configuration_url, @@ -1678,7 +1693,8 @@ def group_configurations_list_handler(request, course_key_string): 'experiment_group_configurations': experiment_group_configurations, 'should_show_experiment_groups': should_show_experiment_groups, 'all_group_configurations': displayable_partitions, - 'should_show_enrollment_track': should_show_enrollment_track + 'should_show_enrollment_track': should_show_enrollment_track, + 'course_authoring_microfrontend_url': course_authoring_microfrontend_url, }) elif "application/json" in request.META.get('HTTP_ACCEPT'): if request.method == 'POST': diff --git a/cms/envs/test.py b/cms/envs/test.py index fcfd77b6d6..3cb1e2ecaf 100644 --- a/cms/envs/test.py +++ b/cms/envs/test.py @@ -135,7 +135,7 @@ LMS_BASE = "localhost:8000" LMS_ROOT_URL = "http://{}".format(LMS_BASE) FEATURES['PREVIEW_LMS_BASE'] = "preview.localhost" -COURSE_AUTHORING_MICROFRONTEND_URL = "http://course-authoring-mfe/" +COURSE_AUTHORING_MICROFRONTEND_URL = "http://course-authoring-mfe" CACHES = { # This is the cache used for most things. Askbot will not work without a diff --git a/cms/templates/certificates.html b/cms/templates/certificates.html index 43dbb5bdde..086212f2a3 100644 --- a/cms/templates/certificates.html +++ b/cms/templates/certificates.html @@ -9,6 +9,8 @@ from openedx.core.djangolib.markup import HTML, Text from openedx.core.djangolib.js_utils import ( dump_js_escaped_json, js_escaped_string ) +import six +from six.moves.urllib.parse import quote %> <%block name="title">${_("Course Certificates")} @@ -102,13 +104,11 @@ CMS.User.isGlobalStaff = '${is_global_staff | n, js_escaped_string}'=='True' ? t
% if context_course: <% + url_encoded_course_id = quote(six.text_type(context_course.id).encode('utf-8'), safe='') details_url = utils.reverse_course_url('settings_handler', context_course.id) grading_url = utils.reverse_course_url('grading_handler', context_course.id) course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) advanced_settings_url = utils.reverse_course_url('advanced_settings_handler', context_course.id) - exams_url = '' - if settings.FEATURES.get('ENABLE_EXAM_SETTINGS_HTML_VIEW'): - exams_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL %>

${_("Other Course Settings")}

diff --git a/cms/templates/group_configurations.html b/cms/templates/group_configurations.html index e002fa6bb4..f00771f9c1 100644 --- a/cms/templates/group_configurations.html +++ b/cms/templates/group_configurations.html @@ -11,6 +11,8 @@ from openedx.core.djangolib.js_utils import ( dump_js_escaped_json, js_escaped_string ) from openedx.core.djangolib.markup import HTML, Text +import six +from six.moves.urllib.parse import quote %> <%block name="title">${_("Group Configurations")} @@ -113,13 +115,11 @@ from openedx.core.djangolib.markup import HTML, Text
% if context_course: <% + url_encoded_course_id = quote(six.text_type(context_course.id).encode('utf-8'), safe='') details_url = utils.reverse_course_url('settings_handler', context_course.id) grading_url = utils.reverse_course_url('grading_handler', context_course.id) course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) advanced_settings_url = utils.reverse_course_url('advanced_settings_handler', context_course.id) - exams_url = '' - if settings.FEATURES.get('ENABLE_EXAM_SETTINGS_HTML_VIEW'): - exams_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL %>

${_("Other Course Settings")}

diff --git a/cms/templates/settings.html b/cms/templates/settings.html index a2f1c4eb22..66dd8b5b5e 100644 --- a/cms/templates/settings.html +++ b/cms/templates/settings.html @@ -13,6 +13,8 @@ dump_js_escaped_json, js_escaped_string ) from openedx.core.djangolib.markup import HTML, Text + import six + from six.moves.urllib.parse import quote from six.moves.urllib import parse as urllib %> @@ -655,12 +657,10 @@ CMS.URL.UPLOAD_ASSET = '${upload_asset_url | n, js_escaped_string}'
% if context_course: <% + url_encoded_course_id = quote(six.text_type(context_course.id).encode('utf-8'), safe='') course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) grading_config_url = utils.reverse_course_url('grading_handler', context_course.id) advanced_config_url = utils.reverse_course_url('advanced_settings_handler', context_course.id) - exams_url = '' - if settings.FEATURES.get('ENABLE_EXAM_SETTINGS_HTML_VIEW'): - exams_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL %>

${_("Other Course Settings")}

diff --git a/cms/templates/settings_advanced.html b/cms/templates/settings_advanced.html index b63f555227..090776f86d 100644 --- a/cms/templates/settings_advanced.html +++ b/cms/templates/settings_advanced.html @@ -3,6 +3,8 @@ <%def name="online_help_token()"><% return "advanced" %> <%namespace name='static' file='static_content.html'/> <%! + import six + from six.moves.urllib.parse import quote from django.utils.translation import ugettext as _ from contentstore import utils from openedx.core.djangolib.js_utils import ( @@ -95,12 +97,10 @@
% if context_course: <% + url_encoded_course_id = quote(six.text_type(context_course.id).encode('utf-8'), safe='') details_url = utils.reverse_course_url('settings_handler', context_course.id) grading_url = utils.reverse_course_url('grading_handler', context_course.id) course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) - exams_url = '' - if settings.FEATURES.get('ENABLE_EXAM_SETTINGS_HTML_VIEW'): - exams_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL %>

${_("Other Course Settings")}

diff --git a/cms/templates/settings_graders.html b/cms/templates/settings_graders.html index fd83943626..a408bd4723 100644 --- a/cms/templates/settings_graders.html +++ b/cms/templates/settings_graders.html @@ -6,6 +6,8 @@ <%namespace name='static' file='static_content.html'/> <%! + import six + from six.moves.urllib.parse import quote import json from contentstore import utils from django.utils.translation import ugettext as _ @@ -152,12 +154,10 @@
% if context_course: <% + url_encoded_course_id = quote(six.text_type(context_course.id).encode('utf-8'), safe='') detailed_settings_url = utils.reverse_course_url('settings_handler', context_course.id) course_team_url = utils.reverse_course_url('course_team_handler', context_course.id) advanced_settings_url = utils.reverse_course_url('advanced_settings_handler', context_course.id) - exams_url = '' - if settings.FEATURES.get('ENABLE_EXAM_SETTINGS_HTML_VIEW'): - exams_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL %>

${_("Other Course Settings")}

diff --git a/cms/templates/widgets/header.html b/cms/templates/widgets/header.html index 1df4f81e19..ae938d39a7 100644 --- a/cms/templates/widgets/header.html +++ b/cms/templates/widgets/header.html @@ -37,9 +37,6 @@ certificates_url = '' if settings.FEATURES.get("CERTIFICATES_HTML_VIEW") and context_course.cert_html_view_enabled: certificates_url = reverse('certificates_list_handler', kwargs={'course_key_string': six.text_type(course_key)}) - exams_url = '' - if settings.FEATURES.get("ENABLE_EXAM_SETTINGS_HTML_VIEW"): - exams_url = settings.COURSE_AUTHORING_MICROFRONTEND_URL checklists_url = reverse('checklists_handler', kwargs={'course_key_string': six.text_type(course_key)}) %> @@ -103,9 +100,9 @@ - % if exams_url: + % if course_authoring_microfrontend_url: % endif