Esempio n. 1
0
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))
Esempio n. 2
0
    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
Esempio n. 3
0
 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
Esempio n. 4
0
 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)