Skip to content

Commit d07678c

Browse files
committed
fixup! fix: adjust studio_grading_url to use the correct URL
1 parent 28851c9 commit d07678c

6 files changed

Lines changed: 55 additions & 33 deletions

File tree

cms/envs/common.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -258,6 +258,7 @@
258258

259259
############################# MICROFRONTENDS ###################################
260260
COURSE_AUTHORING_MICROFRONTEND_URL = None
261+
ADMIN_CONSOLE_MICROFRONTEND_URL = None
261262

262263
############################# SET PATH INFORMATION #############################
263264
PROJECT_ROOT = path(__file__).abspath().dirname().dirname() # /edx-platform/cms

cms/envs/devstack.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ def should_show_debug_toolbar(request): # lint-amnesty, pylint: disable=missing
181181

182182
################### FRONTEND APPLICATION COURSE AUTHORING ###################
183183
COURSE_AUTHORING_MICROFRONTEND_URL = 'http://localhost:2001'
184+
ADMIN_CONSOLE_MICROFRONTEND_URL = 'http://localhost:2025'
184185

185186
################### FRONTEND APPLICATION DISCUSSIONS ###################
186187
DISCUSSIONS_MICROFRONTEND_URL = 'http://localhost:2002'

cms/envs/mock.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -230,6 +230,7 @@ CORS_ORIGIN_WHITELIST:
230230
- https://localhost
231231
- https://www.localhost
232232
COURSE_AUTHORING_MICROFRONTEND_URL: https://course-authoring.localhost
233+
ADMIN_CONSOLE_MICROFRONTEND_URL: http://admin-console.localhost
233234
COURSE_CATALOG_API_URL: https://discovery.localhost/api/v1
234235
COURSE_CATALOG_URL_ROOT: https://discovery.localhost
235236
COURSE_IMPORT_EXPORT_BUCKET: import-export

cms/envs/test.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@
9797
CMS_ROOT_URL = f"http://{CMS_BASE}"
9898

9999
COURSE_AUTHORING_MICROFRONTEND_URL = "http://course-authoring-mfe"
100+
ADMIN_CONSOLE_MICROFRONTEND_URL = "http://admin-console-mfe"
100101

101102
CACHES = {
102103
# This is the cache used for most things.

lms/djangoapps/instructor/tests/test_api_v2.py

Lines changed: 36 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ def _get_url(self, course_id=None):
119119
return reverse('instructor_api_v2:course_metadata', kwargs={'course_id': course_id})
120120

121121
@override_settings(COURSE_AUTHORING_MICROFRONTEND_URL='http://localhost:2001')
122+
@override_settings(ADMIN_CONSOLE_MICROFRONTEND_URL='http://localhost:2025')
122123
def test_get_course_metadata_as_instructor(self):
123124
"""
124125
Test that an instructor can retrieve comprehensive course metadata.
@@ -130,52 +131,54 @@ def test_get_course_metadata_as_instructor(self):
130131
data = response.data
131132

132133
# Verify basic course information
133-
self.assertEqual(data['course_id'], str(self.course_key)) # noqa: PT009
134-
self.assertEqual(data['display_name'], 'Demonstration Course') # noqa: PT009
135-
self.assertEqual(data['org'], 'edX') # noqa: PT009
136-
self.assertEqual(data['course_number'], 'DemoX') # noqa: PT009
137-
self.assertEqual(data['course_run'], 'Demo_Course') # noqa: PT009
138-
self.assertEqual(data['pacing'], 'instructor') # noqa: PT009
134+
assert data['course_id'] == str(self.course_key)
135+
assert data['display_name'] == 'Demonstration Course'
136+
assert data['org'] == 'edX'
137+
assert data['course_number'] == 'DemoX'
138+
assert data['course_run'] == 'Demo_Course'
139+
assert data['pacing'] == 'instructor'
139140

140141
# Verify enrollment counts structure
141-
self.assertIn('enrollment_counts', data) # noqa: PT009
142-
self.assertIn('total', data['enrollment_counts']) # noqa: PT009
143-
self.assertIn('total_enrollment', data) # noqa: PT009
144-
self.assertGreaterEqual(data['total_enrollment'], 3) # noqa: PT009
142+
assert 'enrollment_counts' in data
143+
assert 'total' in data['enrollment_counts']
144+
assert 'total_enrollment' in data
145+
assert data['total_enrollment'] >= 3
145146

146147
# Verify role-based enrollment counts are present
147-
self.assertIn('learner_count', data) # noqa: PT009
148-
self.assertIn('staff_count', data) # noqa: PT009
149-
self.assertEqual(data['total_enrollment'], data['learner_count'] + data['staff_count']) # noqa: PT009
148+
assert 'learner_count' in data
149+
assert 'staff_count' in data
150+
assert data['total_enrollment'] == data['learner_count'] + data['staff_count']
150151

151152
# Verify permissions structure
152-
self.assertIn('permissions', data) # noqa: PT009
153+
assert 'permissions' in data
153154
permissions_data = data['permissions']
154-
self.assertIn('admin', permissions_data) # noqa: PT009
155-
self.assertIn('instructor', permissions_data) # noqa: PT009
156-
self.assertIn('staff', permissions_data) # noqa: PT009
157-
self.assertIn('forum_admin', permissions_data) # noqa: PT009
158-
self.assertIn('finance_admin', permissions_data) # noqa: PT009
159-
self.assertIn('sales_admin', permissions_data) # noqa: PT009
160-
self.assertIn('data_researcher', permissions_data) # noqa: PT009
155+
assert 'admin' in permissions_data
156+
assert 'instructor' in permissions_data
157+
assert 'staff' in permissions_data
158+
assert 'forum_admin' in permissions_data
159+
assert 'finance_admin' in permissions_data
160+
assert 'sales_admin' in permissions_data
161+
assert 'data_researcher' in permissions_data
161162

162163
# Verify sections structure
163-
self.assertIn('tabs', data) # noqa: PT009
164-
self.assertIsInstance(data['tabs'], list) # noqa: PT009
164+
assert 'tabs' in data
165+
assert isinstance(data['tabs'], list)
165166

166167
# Verify other metadata fields
167-
self.assertIn('num_sections', data) # noqa: PT009
168-
self.assertIn('tabs', data) # noqa: PT009
169-
self.assertIn('grade_cutoffs', data) # noqa: PT009
170-
self.assertIn('course_errors', data) # noqa: PT009
171-
self.assertIn('studio_url', data) # noqa: PT009
172-
self.assertIn('disable_buttons', data) # noqa: PT009
173-
self.assertIn('has_started', data) # noqa: PT009
174-
self.assertIn('has_ended', data) # noqa: PT009
175-
self.assertIn('analytics_dashboard_message', data) # noqa: PT009
176-
168+
assert 'num_sections' in data
169+
assert 'tabs' in data
170+
assert 'grade_cutoffs' in data
171+
assert 'course_errors' in data
172+
assert 'studio_url' in data
173+
assert 'disable_buttons' in data
174+
assert 'has_started' in data
175+
assert 'has_ended' in data
176+
assert 'analytics_dashboard_message' in data
177177
assert 'studio_grading_url' in data
178+
assert 'admin_console_url' in data
179+
178180
assert data['studio_grading_url'] == f'http://localhost:2001/authoring/course/{self.course.id}/settings/grading'
181+
assert data['admin_console_url'] == 'http://localhost:2025/admin-console/authz'
179182

180183
def test_get_course_metadata_as_staff(self):
181184
"""

lms/djangoapps/instructor/views/serializers_v2.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,9 @@ class CourseInformationSerializerV2(serializers.Serializer):
7575
studio_grading_url = serializers.SerializerMethodField(
7676
help_text="URL to the Studio grading settings page for the course (null if not configured)"
7777
)
78+
admin_console_url = serializers.SerializerMethodField(
79+
help_text="URL to the admin console"
80+
)
7881
permissions = serializers.SerializerMethodField(help_text="User permissions for instructor dashboard features")
7982
tabs = serializers.SerializerMethodField(help_text="List of course tabs with configuration and display information")
8083
disable_buttons = serializers.SerializerMethodField(
@@ -464,6 +467,18 @@ def get_studio_grading_url(self, data):
464467
return f'{mfe_base_url}/authoring/course/{course_key}/settings/grading'
465468
return None
466469

470+
def get_admin_console_url(self, data):
471+
"""Get admin console URL."""
472+
course_key = data['course'].id
473+
mfe_base_url = configuration_helpers.get_value_for_org(
474+
course_key.org,
475+
'ADMIN_CONSOLE_MICROFRONTEND_URL',
476+
getattr(settings, 'ADMIN_CONSOLE_MICROFRONTEND_URL', None)
477+
)
478+
if mfe_base_url:
479+
return f'{mfe_base_url}/admin-console/authz'
480+
return mfe_base_url
481+
467482
def get_disable_buttons(self, data):
468483
"""Check if buttons should be disabled for large courses."""
469484
return not CourseEnrollment.objects.is_small_course(data['course'].id)

0 commit comments

Comments
 (0)