def get_staff_assessment_statistics_context(course_id, item_id): """ Returns a context with staff assessment "ungraded" and "in-progress" counts. """ grading_stats = staff_api.get_staff_grading_statistics(course_id, item_id) return { 'staff_assessment_ungraded': grading_stats['ungraded'], 'staff_assessment_in_progress': grading_stats['in-progress'] }
def get_staff_assessment_statistics_context(course_id, item_id): """ Returns a context with staff assessment "ungraded" and "in-progress" counts. """ # Import is placed here to avoid model import at project startup. from openassessment.assessment.api import staff as staff_api grading_stats = staff_api.get_staff_grading_statistics(course_id, item_id) return { 'staff_assessment_ungraded': grading_stats['ungraded'], 'staff_assessment_in_progress': grading_stats['in-progress'] }
def test_grading_statistics(self): bob_sub, bob = self._create_student_and_submission( "bob", "bob's answer") course_id = bob['course_id'] item_id = bob['item_id'] tim_sub, tim = self._create_student_and_submission( "Tim", "Tim's answer") sue_sub, sue = self._create_student_and_submission( "Sue", "Sue's answer") stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 0, 'ungraded': 3, 'in-progress': 0}) # Fetch a grade so that there's one 'in-progress' tim_to_grade = staff_api.get_submission_to_assess( course_id, item_id, tim['student_id']) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 0, 'ungraded': 2, 'in-progress': 1}) bob_to_grade = staff_api.get_submission_to_assess( tim['course_id'], tim['item_id'], bob['student_id']) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 0, 'ungraded': 1, 'in-progress': 2}) # Grade one of the submissions staff_assessment = staff_api.create_assessment( tim_to_grade["uuid"], tim['student_id'], OPTIONS_SELECTED_DICT["all"]["options"], dict(), "", RUBRIC, ) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 1, 'ungraded': 1, 'in-progress': 1}) # When one of the 'locks' times out, verify that it is no longer # considered ungraded. workflow = StaffWorkflow.objects.get(scorer_id=bob['student_id']) timestamp = (now() - (workflow.TIME_LIMIT + timedelta(hours=1)) ).strftime("%Y-%m-%d %H:%M:%S") workflow.grading_started_at = timestamp workflow.save() stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 1, 'ungraded': 2, 'in-progress': 0}) workflow_api.cancel_workflow(bob_to_grade['uuid'], "Test Cancel", bob['student_id'], {}) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 1, 'ungraded': 1, 'in-progress': 0})
def test_grading_statistics(self): _, bob = self._create_student_and_submission("bob", "bob's answer") course_id = bob['course_id'] item_id = bob['item_id'] _, tim = self._create_student_and_submission("Tim", "Tim's answer") self._create_student_and_submission("Sue", "Sue's answer") stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 0, 'ungraded': 3, 'in-progress': 0}) # Fetch a grade so that there's one 'in-progress' tim_to_grade = staff_api.get_submission_to_assess(course_id, item_id, tim['student_id']) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 0, 'ungraded': 2, 'in-progress': 1}) bob_to_grade = staff_api.get_submission_to_assess(tim['course_id'], tim['item_id'], bob['student_id']) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 0, 'ungraded': 1, 'in-progress': 2}) # Grade one of the submissions staff_api.create_assessment( tim_to_grade["uuid"], tim['student_id'], OPTIONS_SELECTED_DICT["all"]["options"], dict(), "", RUBRIC, ) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 1, 'ungraded': 1, 'in-progress': 1}) # When one of the 'locks' times out, verify that it is no longer # considered ungraded. workflow = StaffWorkflow.objects.get(scorer_id=bob['student_id']) timestamp = (now() - (workflow.TIME_LIMIT + timedelta(hours=1))).strftime("%Y-%m-%d %H:%M:%S") workflow.grading_started_at = timestamp workflow.save() stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 1, 'ungraded': 2, 'in-progress': 0}) workflow_api.cancel_workflow(bob_to_grade['uuid'], "Test Cancel", bob['student_id'], {}) stats = staff_api.get_staff_grading_statistics(course_id, item_id) self.assertEqual(stats, {'graded': 1, 'ungraded': 1, 'in-progress': 0})