示例#1
0
 def setUpTestData(cls):
     super().setUpTestData()
     cls.password = '******'
     cls.staff = User.objects.create(username='******',
                                     password=cls.password)
     cls.course_id = 'course-v1:testX+sg101+2019'
     cls.subsections = list(
         grades_api.graded_subsections_for_course_id(cls.course_id))
     cls.subsection_short_ids = [
         subsection.location.block_id[:8] for subsection in cls.subsections
     ]
     cls.learners = cls._make_enrollments()
     cls.audit_learner, cls.verified_learner, cls.masters_learner = cls.learners
示例#2
0
    def test_export_override(self):
        subsections = list(grades_api.graded_subsections_for_course_id(None))
        subsection = subsections[1]
        processor = api.InterventionCSVProcessor(course_id=self.course_id)
        mock_grade = make_mock_grade(override=Mock(earned_graded_override=.9), earned_graded=.4)
        grades = chain((make_mock_grade(), mock_grade), repeat(make_mock_grade()))
        with patch('lms.djangoapps.grades.api.get_subsection_grades') as mock_subsection_grades:
            mock_subsection_grades.side_effect = mock_subsection_grade(grades)
            rows = list(processor.get_iterator())

        grade_column_index = rows[0].split(',').index('grade-123402db')

        assert len(rows) == 3

        row = rows[1].split(',')
        assert row[0] == str(self.masters_learner.id)
        assert row[grade_column_index] == '0.9'
示例#3
0
    def test_filter_subsection_grade_no_subsection_grade(self):
        subsections = list(grades_api.graded_subsections_for_course_id(None))
        filter_subsection = subsections[1]
        processor = api.InterventionCSVProcessor(
            course_id=self.course_id,
            subsection=str(filter_subsection.location),
            subsection_grade_min=1,
            subsection_grade_max=100,
        )
        grades = chain([make_mock_grade(), None], repeat(make_mock_grade()))
        with patch('lms.djangoapps.grades.api.get_subsection_grades') as mock_subsection_grades:
            mock_subsection_grades.side_effect = mock_subsection_grade(grades)
            rows = list(processor.get_iterator())

        assert len(rows) == 2
        row = rows[1].split(',')
        assert row[0] == str(self.masters_learner_2.id)
示例#4
0
    def test_filter_subsection_grade(self, subsection_grade_min, subsection_grade_max, expected_rows):
        subsections = list(grades_api.graded_subsections_for_course_id(None))
        filter_subsection = subsections[1]
        processor = api.InterventionCSVProcessor(
            course_id=self.course_id,
            subsection=str(filter_subsection.location),
            subsection_grade_min=subsection_grade_min,
            subsection_grade_max=subsection_grade_max,
        )
        grades = [
            make_mock_grade(), make_mock_grade(earned_graded=0.9), make_mock_grade(),
            make_mock_grade(), make_mock_grade(earned_graded=0.5), make_mock_grade(),
        ]
        with patch('lms.djangoapps.grades.api.get_subsection_grades') as mock_subsection_grades:
            mock_subsection_grades.side_effect = mock_subsection_grade(iter(grades))
            rows = list(processor.get_iterator())

        assert len(rows) == expected_rows
示例#5
0
    def _get_graded_subsections(course_id,
                                filter_subsection=None,
                                filter_assignment_type=None):
        """
        Return list of graded subsections.

        If filter_subsection (block usage id) is set, return only that subsection.
        If filter_assignment_type (string) is set, return only subsections of the appropriate type.
        """
        subsections = OrderedDict()
        for subsection in grades_api.graded_subsections_for_course_id(
                course_id):
            block_id = str(subsection.location.block_id)
            if (  # pragma: no branch
                (filter_subsection and
                 (block_id != filter_subsection.block_id))
                    or (filter_assignment_type and
                        (filter_assignment_type != str(subsection.format)))):
                continue  # pragma: no cover
            short_block_id = block_id[:8]
            if short_block_id not in subsections:
                subsections[short_block_id] = (subsection,
                                               subsection.display_name)
        return subsections
示例#6
0
 def f(user_id, course_key):
     result = {}
     for subsection in grades_api.graded_subsections_for_course_id(course_key):
         result[subsection.location] = next(grade_iter)
     return result