コード例 #1
0
def add_entrance_exam_milestone(course, entrance_exam):
    """
    Adds the milestone for given `entrance_exam` in `course`

    Args:
        course (Course): Course object in which the extrance_exam is located
        entrance_exam (xblock): the entrance exam to be added as a milestone
    """
    namespace_choices = get_namespace_choices()
    milestone_relationship_types = get_milestone_relationship_types()

    milestone_namespace = generate_milestone_namespace(
        namespace_choices.get('ENTRANCE_EXAM'),
        course.id
    )
    milestone = add_milestone(
        {
            'name': 'Test Milestone',
            'namespace': milestone_namespace,
            'description': 'Testing Courseware Entrance Exam Chapter',
        }
    )
    add_course_milestone(
        str(course.id),
        milestone_relationship_types['REQUIRES'],
        milestone
    )
    add_course_content_milestone(
        str(course.id),
        str(entrance_exam.location),
        milestone_relationship_types['FULFILLS'],
        milestone
    )
コード例 #2
0
 def test_get_course_tabs_list_entrance_exam_enabled(self):
     """
     Unit Test: test_get_course_tabs_list_entrance_exam_enabled
     """
     entrance_exam = ItemFactory.create(
         category="chapter",
         parent_location=self.course.location,
         data="Exam Data",
         display_name="Entrance Exam",
         is_entrance_exam=True)
     milestone = {
         'name': 'Test Milestone',
         'namespace': '{}.entrance_exams'.format(str(self.course.id)),
         'description': 'Testing Courseware Tabs'
     }
     self.user.is_staff = False
     self.course.entrance_exam_enabled = True
     self.course.entrance_exam_id = str(entrance_exam.location)
     milestone = add_milestone(milestone)
     add_course_milestone(str(self.course.id),
                          self.relationship_types['REQUIRES'], milestone)
     add_course_content_milestone(str(self.course.id),
                                  str(entrance_exam.location),
                                  self.relationship_types['FULFILLS'],
                                  milestone)
     course_tab_list = get_course_tab_list(self.user, self.course)
     assert len(course_tab_list) == 1
     assert course_tab_list[0]['tab_id'] == 'courseware'
     assert course_tab_list[0]['name'] == 'Entrance Exam'
コード例 #3
0
def add_entrance_exam_milestone(course_id, x_block):  # lint-amnesty, pylint: disable=missing-function-docstring
    # Add an entrance exam milestone if one does not already exist for given xBlock
    # As this is a standalone method for entrance exam, We should check that given xBlock should be an entrance exam.
    if x_block.is_entrance_exam:
        namespace_choices = milestones_helpers.get_namespace_choices()
        milestone_namespace = milestones_helpers.generate_milestone_namespace(
            namespace_choices.get('ENTRANCE_EXAM'),
            course_id
        )
        milestones = milestones_helpers.get_milestones(milestone_namespace)
        if len(milestones):  # lint-amnesty, pylint: disable=len-as-condition
            milestone = milestones[0]
        else:
            description = f'Autogenerated during {str(course_id)} entrance exam creation.'
            milestone = milestones_helpers.add_milestone({
                'name': _('Completed Course Entrance Exam'),
                'namespace': milestone_namespace,
                'description': description
            })
        relationship_types = milestones_helpers.get_milestone_relationship_types()
        milestones_helpers.add_course_milestone(
            str(course_id),
            relationship_types['REQUIRES'],
            milestone
        )
        milestones_helpers.add_course_content_milestone(
            str(course_id),
            str(x_block.location),
            relationship_types['FULFILLS'],
            milestone
        )
コード例 #4
0
    def test_get_required_content_with_anonymous_user(self):
        course = CourseFactory()

        required_content = milestones_helpers.get_required_content(course.id, AnonymousUser())
        assert required_content == []

        # NOTE (CCB): The initial version of anonymous courseware access is very simple. We avoid accidentally
        # exposing locked content by simply avoiding anonymous access altogether for courses runs with milestones.
        milestone = milestones_api.add_milestone({
            'name': 'test',
            'namespace': 'test',
        })
        milestones_helpers.add_course_milestone(str(course.id), 'requires', milestone)
        with pytest.raises(InvalidUserException):
            milestones_helpers.get_required_content(course.id, AnonymousUser())
コード例 #5
0
 def test_add_course_milestone_returns_none_when_app_disabled(self):
     response = milestones_helpers.add_course_milestone(
         six.text_type(self.course.id), 'requires', self.milestone)
     assert response is None