Merge pull request #27244 from edx/bseverino/proctoring-info-masquerade
[MST-738] Pass username into CourseHomeMetadataView
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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'}">
|
||||
|
||||
Reference in New Issue
Block a user