Merge pull request #27244 from edx/bseverino/proctoring-info-masquerade

[MST-738] Pass username into CourseHomeMetadataView
This commit is contained in:
Bianca Severino
2021-04-09 10:44:04 -04:00
committed by GitHub
4 changed files with 27 additions and 8 deletions

View File

@@ -32,6 +32,7 @@ class CourseHomeMetadataSerializer(serializers.Serializer):
Serializer for the Course Home Course Metadata
"""
course_id = serializers.CharField()
username = serializers.CharField()
is_enrolled = serializers.BooleanField()
is_self_paced = serializers.BooleanField()
is_staff = serializers.BooleanField()

View File

@@ -28,6 +28,12 @@ class CourseHomeMetadataTests(BaseCourseHomeTests):
def setUp(self):
super().setUp()
self.url = reverse('course-home-course-metadata', args=[self.course.id])
self.staff_user = UserFactory(
username='staff',
email='staff@example.com',
password='bar',
is_staff=True
)
def test_get_authenticated_user(self):
CourseEnrollment.enroll(self.user, self.course.id, CourseMode.VERIFIED)
@@ -39,13 +45,7 @@ class CourseHomeMetadataTests(BaseCourseHomeTests):
def test_get_authenticated_staff_user(self):
self.client.logout()
staff_user = UserFactory(
username='staff',
email='staff@example.com',
password='bar',
is_staff=True
)
self.client.login(username=staff_user.username, password='bar')
self.client.login(username=self.staff_user.username, password='bar')
response = self.client.get(self.url)
assert response.status_code == 200
assert response.data['is_staff']
@@ -53,6 +53,19 @@ class CourseHomeMetadataTests(BaseCourseHomeTests):
# 'Course', 'Wiki', 'Progress', and 'Instructor' tabs
assert len(response.data.get('tabs', [])) == 4
def test_get_masqueraded_user(self):
CourseEnrollment.enroll(self.user, self.course.id, CourseMode.VERIFIED)
self.client.logout()
self.client.login(username=self.staff_user.username, password='bar')
# Sanity check on our normal staff user
assert self.client.get(self.url).data['username'] == self.staff_user.username
# Now switch users and confirm we get a different result
self.update_masquerade(username=self.user.username)
assert self.client.get(self.url).data['username'] == self.user.username
def test_get_unknown_course(self):
url = reverse('course-home-course-metadata', args=['course-v1:unknown+course+2T2020'])
response = self.client.get(url)

View File

@@ -36,6 +36,8 @@ class CourseHomeMetadataView(RetrieveAPIView):
Body consists of the following fields:
course_id: (str) The Course's id (Course Run key)
username: (str) The requesting (or masqueraded) user. Returns None for an
unauthenticated user.
is_enrolled: (bool) Indicates if the user is enrolled in the course
is_self_paced: (bool) Indicates if the course is self paced
is_staff: (bool) Indicates if the user is staff
@@ -77,6 +79,7 @@ class CourseHomeMetadataView(RetrieveAPIView):
reset_masquerade_data=True,
)
username = request.user.username if request.user.username else None
course = course_detail(request, request.user.username, course_key)
user_is_enrolled = CourseEnrollment.is_enrolled(request.user, course_key_string)
browser_timezone = request.query_params.get('browser_timezone', None)
@@ -91,6 +94,7 @@ class CourseHomeMetadataView(RetrieveAPIView):
data = {
'course_id': course.id,
'username': username,
'is_staff': has_access(request.user, 'staff', course_key).has_access,
'original_user_is_staff': original_user_is_staff,
'number': course.display_number_with_default,

View File

@@ -85,7 +85,8 @@ from openedx.features.course_experience.course_tools import HttpMethod
</div>
<aside class="page-content-secondary course-sidebar">
% if show_proctoring_info_panel:
<div class="proctoring-info-panel" data-course-id="${course_key}"></div>
<div class="proctoring-info-panel"
data-course-id="${course_key}" data-username="${username}"></div>
% endif
% if has_goal_permission:
<div class="section section-goals ${'' if current_goal else 'hidden'}">