コード例 #1
0
ファイル: test_team_api.py プロジェクト: edx/edx-submissions
 def test_get_team_submission_from_individual_submission_exception(self):
     """
     Test that calling team_api.get_team_submission when there is no matching TeamSubmission will
     raise a TeamSubmissionNotFoundError
     """
     with self.assertRaises(TeamSubmissionNotFoundError):
         team_api.get_team_submission_from_individual_submission('aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee')
コード例 #2
0
 def get_team_submission_uuid_from_individual_submission_uuid(
         self, individual_submission_uuid):
     """
     Given an individual submission uuid, return the uuid of the related team submission
     """
     team_submission = get_team_submission_from_individual_submission(
         individual_submission_uuid)
     return team_submission['team_submission_uuid']
コード例 #3
0
ファイル: test_team_api.py プロジェクト: edx/edx-submissions
 def test_get_team_submission_from_individual_submission(self):
     """
     Test that calling team_api.get_team_submission_from_individual_submission returns the expected team submission
     """
     team_submission_model = self._make_team_submission(create_submissions=True)
     regular_submission_uuid = team_submission_model.submissions.first().uuid
     team_submission_dict = team_api.get_team_submission_from_individual_submission(regular_submission_uuid)
     self.assertDictEqual(
         team_submission_dict,
         TeamSubmissionSerializer(team_submission_model).data
     )
コード例 #4
0
    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, ''
コード例 #5
0
    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': ""}
コード例 #6
0
    def add_team_submission_context(self,
                                    context,
                                    team_submission_uuid=None,
                                    individual_submission_uuid=None,
                                    transform_usernames=False):
        """
        Adds team submission information to context dictionary, based on existing team submissions
        Specifically team name and team_usernames

        Params:
            - context (dict): a context dict for rendering a page that we will add values to
            - team_submission_uuid (string): [optional] the uuid of the team submission we want to add context info for
            - individual_submission_uuid (string): [optional] the uuid of an individual submission that's a part of
                                                   the team submission for which we want to add context info
            - transform_usernames (bool): [optional default: False] If False, context['team_usernames'] will be a list
                                          of username strings. If True, it will be a string, in the form
                                          "Username1, Username2, ... UsernameN, and UsernameN+1"

        One of team_submission_uuid and individual_submission_uuid are required, and if they are both provided,
        individual_submission_uuid will be ignored.
        """
        if not any((team_submission_uuid, individual_submission_uuid)):
            raise TypeError(
                "One of team_submission_uuid or individual_submission_uuid must be provided"
            )
        if team_submission_uuid:
            team_submission = get_team_submission(team_submission_uuid)
        elif individual_submission_uuid:
            team_submission = get_team_submission_from_individual_submission(
                individual_submission_uuid)

        team = self.teams_service.get_team_by_team_id(
            team_submission['team_id'])
        context['team_name'] = team.name

        student_ids = get_team_submission_student_ids(
            team_submission['team_submission_uuid'])
        usernames = [
            self.get_username(student_id) for student_id in student_ids
        ]
        if transform_usernames:
            usernames = list_to_conversational_format(usernames)
        context['team_usernames'] = usernames