def has_full_access_role_in_masquerade(user, course_key): """ The roles of the masquerade user are used to determine whether the content gate displays. Returns: True if we are masquerading as a full-access generic user False if we are masquerading as a non-full-access generic user None if we are not masquerading or masquerading as a specific student that should go through normal checks """ # The masquerade module imports from us, so avoid a circular dependency here from lms.djangoapps.courseware.masquerade import ( get_course_masquerade, is_masquerading_as_full_access, is_masquerading_as_non_audit_enrollment, is_masquerading_as_specific_student, is_masquerading_as_staff, ) course_masquerade = get_course_masquerade(user, course_key) if not course_masquerade or is_masquerading_as_specific_student( user, course_key): return None return (is_masquerading_as_staff(user, course_key) or is_masquerading_as_full_access(user, course_key, course_masquerade) or is_masquerading_as_non_audit_enrollment(user, course_key, course_masquerade))
def user_needs_integrity_signature(self): """ Boolean describing whether the user needs to sign the integrity agreement for a course. """ if not settings.FEATURES.get('ENABLE_INTEGRITY_SIGNATURE'): return False integrity_signature_required = ( self.enrollment_object # Master's enrollments are excluded here as honor code is handled separately and self.enrollment_object.mode in CourseMode.CREDIT_MODES + CourseMode.CREDIT_ELIGIBLE_MODES) if not integrity_signature_required: # Check masquerading as a non-audit enrollment integrity_signature_required = is_masquerading_as_non_audit_enrollment( self.effective_user, self.course_key, self.course_masquerade) if integrity_signature_required: signature = get_integrity_signature(self.effective_user.username, str(self.course_key)) if not signature: return True return False
def content_type_gating_enabled(self): course_key = self.course_key user = self.effective_user is_enabled = None course_masquerade = self.course_masquerade if is_masquerading(user, course_key, course_masquerade): if is_masquerading_as_staff(user, course_key): is_enabled = False elif is_masquerading_as_full_access(user, course_key, course_masquerade): is_enabled = False elif is_masquerading_as_non_audit_enrollment( user, course_key, course_masquerade): is_enabled = False elif is_masquerading_as_audit_enrollment(user, course_key, course_masquerade): is_enabled = ContentTypeGatingConfig.enabled_for_course( course_key) elif is_masquerading_as_limited_access(user, course_key, course_masquerade): is_enabled = ContentTypeGatingConfig.enabled_for_course( course_key) if is_enabled is None: is_enabled = ContentTypeGatingConfig.enabled_for_enrollment( user=user, course_key=course_key, ) return is_enabled
def can_access_proctored_exams(self): """Returns if the user is eligible to access proctored exams""" if is_masquerading_as_non_audit_enrollment(self.effective_user, self.course_key, self.course_masquerade): # Masquerading should mimic the correct enrollment track behavior. return True else: enrollment_mode = self.enrollment['mode'] enrollment_active = self.enrollment['is_active'] return enrollment_active and CourseMode.is_eligible_for_certificate( enrollment_mode)