def test_get_grading_statistics(self): # Given an open response item mock_ora = ('mock-course', 'mock-item') # Initially, nothing listed self.assertEqual(teams_api.get_staff_grading_statistics(*mock_ora), { 'graded': 0, 'ungraded': 0, 'in-progress': 0 }) # New submissions count towards 'ungraded' submission = self._create_test_submission_for_team() self.assertEqual(teams_api.get_staff_grading_statistics(*mock_ora), { 'graded': 0, 'ungraded': 1, 'in-progress': 0 }) # Complete assessments count towards 'graded' teams_api.create_assessment(submission['team_submission_uuid'], *self.default_assessment) self.assertEqual(teams_api.get_staff_grading_statistics(*mock_ora), { 'graded': 1, 'ungraded': 0, 'in-progress': 0 })
def test_create_assessment(self): # Given a team submission and workflow team_submission = self._create_test_submission_for_team() # When I create an assessment assessments = teams_api.create_assessment( team_submission['team_submission_uuid'], *self.default_assessment) # Assessments are created for each memeber of the team self.assertEqual( [assessment['submission_uuid'] for assessment in assessments], [str(uuid) for uuid in team_submission['submission_uuids']])
def do_team_staff_assessment(self, data, team_submission_uuid=None): """ Teams version of do_staff_assessment. Providing the team_submission_uuid removes lookup of team submission from individual submission_uuid. """ if 'submission_uuid' not in data and team_submission_uuid is None: return False, self._( "The submission ID of the submission being assessed was not found." ) try: if not team_submission_uuid: team_submission = team_sub_api.get_team_submission_from_individual_submission( data['submission_uuid']) team_submission_uuid = team_submission['team_submission_uuid'] assessment = teams_api.create_assessment( team_submission_uuid, self.get_student_item_dict()["student_id"], data['options_selected'], clean_criterion_feedback(self.rubric_criteria, data['criterion_feedback']), data['overall_feedback'], create_rubric_dict(self.prompts, self.rubric_criteria_with_labels)) assess_type = data.get('assess_type', 'regrade') self.publish_assessment_event("openassessmentblock.staff_assess", assessment[0], type=assess_type) team_workflow_api.update_from_assessments( team_submission_uuid, override_submitter_requirements=(assess_type == 'regrade')) except StaffAssessmentRequestError: logger.warning( "An error occurred while submitting a team assessment " "for the submission %s", data['submission_uuid'], exc_info=True) msg = self._("Your team assessment could not be submitted.") return False, msg except StaffAssessmentInternalError: logger.exception( "An error occurred while submitting a team assessment " "for the submission %s", data['submission_uuid'], ) msg = self._("Your team assessment could not be submitted.") return False, msg return True, ''
def _create_test_assessments_for_team(self, team_submission_uuid): """ Helper to create team assessments. Implicitly creates a submission and workflow to link the assessment to. Returns: Assessments """ # Create submission and workflow if team_submission_uuid is None: team_submission_uuid = self._create_test_submission_for_team( )['team_submission_uuid'] # Create assessment assessments = teams_api.create_assessment( team_submission_uuid, self.staff_user_id, OPTIONS_SELECTED_DICT["few"]["options"], dict(), "", RUBRIC) return assessments
def _team_assess(self, data): """ Encapsulates the functionality around staff assessment for a team based assignment """ try: team_submission = team_sub_api.get_team_submission_from_individual_submission( data['submission_uuid']) team_submission_uuid = team_submission['team_submission_uuid'] assessment = teams_api.create_assessment( team_submission_uuid, self.get_student_item_dict()["student_id"], data['options_selected'], clean_criterion_feedback(self.rubric_criteria, data['criterion_feedback']), data['overall_feedback'], create_rubric_dict(self.prompts, self.rubric_criteria_with_labels)) assess_type = data.get('assess_type', 'regrade') self.publish_assessment_event("openassessmentblock.staff_assess", assessment[0], type=assess_type) team_workflow_api.update_from_assessments( team_submission_uuid, override_submitter_requirements=(assess_type == 'regrade')) except StaffAssessmentRequestError: logger.warning( "An error occurred while submitting a team assessment " "for the submission %s", data['submission_uuid'], exc_info=True) msg = self._("Your team assessment could not be submitted.") return {'success': False, 'msg': msg} except StaffAssessmentInternalError: logger.exception( "An error occurred while submitting a team assessment " "for the submission %s", data['submission_uuid'], ) msg = self._("Your team assessment could not be submitted.") return {'success': False, 'msg': msg} return {'success': True, 'msg': ""}