示例#1
0
    def test_assigning_same_language_for_translation_review_raise_error(self):
        self.login(self.TRANSLATION_ADMIN_EMAIL)
        self.assertFalse(
            user_services.can_review_translation_suggestions(
                self.translation_reviewer_id, language_code='hi'))
        csrf_token = self.get_new_csrf_token()
        self.post_json('/contributionrightshandler/translation', {
            'username': '******',
            'language_code': 'hi'
        },
                       csrf_token=csrf_token)
        self.assertTrue(
            user_services.can_review_translation_suggestions(
                self.translation_reviewer_id, language_code='hi'))
        response = self.post_json('/contributionrightshandler/translation', {
            'username': '******',
            'language_code': 'hi'
        },
                                  csrf_token=csrf_token,
                                  expected_status_int=400)

        self.assertEqual(
            response['error'],
            'User translator already has rights to review translation in '
            'language code hi')
    def test_add_translation_reviewer(self):
        self.assertFalse(
            user_services.can_review_translation_suggestions(
                self.translation_reviewer_id, language_code='hi'))

        self.login(self.TRANSLATION_ADMIN_EMAIL)

        csrf_token = self.get_new_csrf_token()
        self.post_json(
            '/contributionrightshandler/translation', {
                'username': '******',
                'language_code': 'hi'
            }, csrf_token=csrf_token)

        self.assertTrue(user_services.can_review_translation_suggestions(
            self.translation_reviewer_id, language_code='hi'))
    def test_remove_translation_reviewer(self):
        user_services.allow_user_to_review_translation_in_language(
            self.translation_reviewer_id, 'hi')
        self.assertTrue(
            user_services.can_review_translation_suggestions(
                self.translation_reviewer_id, language_code='hi'))

        self.login(self.TRANSLATION_ADMIN_EMAIL)

        self.delete_json(
            '/contributionrightshandler/translation', params={
                'username': '******',
                'language_code': 'hi'
            })

        self.assertFalse(user_services.can_review_translation_suggestions(
            self.translation_reviewer_id, language_code='hi'))
示例#4
0
    def post(self):
        username = self.payload.get('username')
        user_id = user_services.get_user_id_from_username(username)

        if user_id is None:
            raise self.InvalidInputException('Invalid username: %s' % username)

        category = self.payload.get('category')
        language_code = self.payload.get('language_code', None)

        if category == constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_TRANSLATION:
            if not utils.is_supported_audio_language_code(language_code):
                raise self.InvalidInputException(
                    'Invalid language_code: %s' % language_code)
            if user_services.can_review_translation_suggestions(
                    user_id, language_code=language_code):
                raise self.InvalidInputException(
                    'User %s already has rights to review translation in '
                    'language code %s' % (username, language_code))
            user_services.allow_user_to_review_translation_in_language(
                user_id, language_code)
        elif category == constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_VOICEOVER:
            if not utils.is_supported_audio_language_code(language_code):
                raise self.InvalidInputException(
                    'Invalid language_code: %s' % language_code)
            if user_services.can_review_voiceover_applications(
                    user_id, language_code=language_code):
                raise self.InvalidInputException(
                    'User %s already has rights to review voiceover in '
                    'language code %s' % (username, language_code))
            user_services.allow_user_to_review_voiceover_in_language(
                user_id, language_code)
        elif category == constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_QUESTION:
            if user_services.can_review_question_suggestions(user_id):
                raise self.InvalidInputException(
                    'User %s already has rights to review question.' % (
                        username))
            user_services.allow_user_to_review_question(user_id)
        elif category == constants.CONTRIBUTION_RIGHT_CATEGORY_SUBMIT_QUESTION:
            if user_services.can_submit_question_suggestions(user_id):
                raise self.InvalidInputException(
                    'User %s already has rights to submit question.' % (
                        username))
            user_services.allow_user_to_submit_question(user_id)
        else:
            raise self.InvalidInputException(
                'Invalid category: %s' % category)

        if category in [
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_TRANSLATION,
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_VOICEOVER,
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_QUESTION
        ]:
            email_manager.send_email_to_new_contribution_reviewer(
                user_id, category, language_code=language_code)
        self.render_json({})
示例#5
0
文件: admin.py 项目: accio112/oppia
    def put(self):
        username = self.payload.get('username', None)
        if username is None:
            raise self.InvalidInputException('Missing username param')
        removal_type = self.payload.get('removal_type')

        user_id = user_services.get_user_id_from_username(username)
        if user_id is None:
            raise self.InvalidInputException(
                'Invalid username: %s' % username)

        language_code = self.payload.get('language_code', None)
        if language_code is not None and not (
                utils.is_supported_audio_language_code(language_code)):
            raise self.InvalidInputException(
                'Invalid language_code: %s' % language_code)

        if removal_type == constants.ACTION_REMOVE_ALL_REVIEW_RIGHTS:
            user_services.remove_community_reviewer(user_id)
        elif removal_type == constants.ACTION_REMOVE_SPECIFIC_REVIEW_RIGHTS:
            review_category = self.payload.get('review_category')
            if review_category == constants.REVIEW_CATEGORY_TRANSLATION:
                if not user_services.can_review_translation_suggestions(
                        user_id, language_code=language_code):
                    raise self.InvalidInputException(
                        '%s does not have rights to review translation in '
                        'language %s.' % (username, language_code))
                user_services.remove_translation_review_rights_in_language(
                    user_id, language_code)
            elif review_category == constants.REVIEW_CATEGORY_VOICEOVER:
                if not user_services.can_review_voiceover_applications(
                        user_id, language_code=language_code):
                    raise self.InvalidInputException(
                        '%s does not have rights to review voiceover in '
                        'language %s.' % (username, language_code))
                user_services.remove_voiceover_review_rights_in_language(
                    user_id, language_code)
            elif review_category == constants.REVIEW_CATEGORY_QUESTION:
                if not user_services.can_review_question_suggestions(user_id):
                    raise self.InvalidInputException(
                        '%s does not have rights to review question.' % (
                            username))
                user_services.remove_question_review_rights(user_id)
            else:
                raise self.InvalidInputException(
                    'Invalid review_category: %s' % review_category)

            email_manager.send_email_to_removed_community_reviewer(
                user_id, review_category, language_code=language_code)
        else:
            raise self.InvalidInputException(
                'Invalid removal_type: %s' % removal_type)

        self.render_json({})
示例#6
0
    def post(self):
        new_reviewer_username = self.payload.get('username')
        new_reviewer_user_id = (
            user_services.get_user_id_from_username(new_reviewer_username))

        if new_reviewer_user_id is None:
            raise self.InvalidInputException('Invalid username: %s' %
                                             new_reviewer_username)

        review_category = self.payload.get('review_category')
        language_code = self.payload.get('language_code', None)

        if review_category == constants.REVIEW_CATEGORY_TRANSLATION:
            if not utils.is_supported_audio_language_code(language_code):
                raise self.InvalidInputException('Invalid language_code: %s' %
                                                 language_code)
            if user_services.can_review_translation_suggestions(
                    new_reviewer_user_id, language_code=language_code):
                raise self.InvalidInputException(
                    'User %s already has rights to review translation in '
                    'language code %s' %
                    (new_reviewer_username, language_code))
            user_services.allow_user_to_review_translation_in_language(
                new_reviewer_user_id, language_code)
        elif review_category == constants.REVIEW_CATEGORY_VOICEOVER:
            if not utils.is_supported_audio_language_code(language_code):
                raise self.InvalidInputException('Invalid language_code: %s' %
                                                 language_code)
            if user_services.can_review_voiceover_applications(
                    new_reviewer_user_id, language_code=language_code):
                raise self.InvalidInputException(
                    'User %s already has rights to review voiceover in '
                    'language code %s' %
                    (new_reviewer_username, language_code))
            user_services.allow_user_to_review_voiceover_in_language(
                new_reviewer_user_id, language_code)
        elif review_category == constants.REVIEW_CATEGORY_QUESTION:
            if user_services.can_review_question_suggestions(
                    new_reviewer_user_id):
                raise self.InvalidInputException(
                    'User %s already has rights to review question.' %
                    (new_reviewer_username))
            user_services.allow_user_to_review_question(new_reviewer_user_id)
        else:
            raise self.InvalidInputException('Invalid review_category: %s' %
                                             review_category)

        email_manager.send_email_to_new_community_reviewer(
            new_reviewer_user_id, review_category, language_code=language_code)
        self.render_json({})
    def test_remove_unassigned_translation_reviewer_raise_error(self):
        self.assertFalse(
            user_services.can_review_translation_suggestions(
                self.translation_reviewer_id, language_code='hi'))
        self.login(self.TRANSLATION_ADMIN_EMAIL)
        response = self.delete_json(
            '/contributionrightshandler/translation', params={
                'username': '******',
                'language_code': 'hi'
            }, expected_status_int=400)

        self.assertEqual(
            response['error'],
            'translator does not have rights to review translation in language '
            'hi.')
示例#8
0
    def delete(self, category):
        username = self.normalized_request.get('username', None)
        user_id = user_services.get_user_id_from_username(username)
        if user_id is None:
            raise self.InvalidInputException(
                'Invalid username: %s' % username)

        language_code = self.normalized_request.get('language_code', None)

        if (category ==
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_TRANSLATION):
            if not user_services.can_review_translation_suggestions(
                    user_id, language_code=language_code):
                raise self.InvalidInputException(
                    '%s does not have rights to review translation in '
                    'language %s.' % (username, language_code))
            user_services.remove_translation_review_rights_in_language(
                user_id, language_code)
        elif category == (
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_QUESTION):
            if not user_services.can_review_question_suggestions(user_id):
                raise self.InvalidInputException(
                    '%s does not have rights to review question.' % (
                        username))
            user_services.remove_question_review_rights(user_id)
        elif category == (
                constants.CONTRIBUTION_RIGHT_CATEGORY_SUBMIT_QUESTION):
            if not user_services.can_submit_question_suggestions(user_id):
                raise self.InvalidInputException(
                    '%s does not have rights to submit question.' % (
                        username))
            user_services.remove_question_submit_rights(user_id)

        if category in [
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_TRANSLATION,
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_VOICEOVER,
                constants.CONTRIBUTION_RIGHT_CATEGORY_REVIEW_QUESTION
        ]:
            email_manager.send_email_to_removed_contribution_reviewer(
                user_id, category, language_code=language_code)

        self.render_json({})