def test_question_admin_check_contribution_reviewer_rights(self):
        self.login(self.QUESTION_ADMIN)
        response = self.get_json(
            '/contributionrightsdatahandler', params={
                'username': '******'
            })
        self.assertEqual(
            list(response.keys()),
            ['can_review_questions', 'can_submit_questions'])
        self.assertEqual(response['can_review_questions'], False)

        user_services.allow_user_to_review_translation_in_language(
            self.reviewer_id, 'hi')
        user_services.allow_user_to_review_question(self.reviewer_id)
        user_services.allow_user_to_submit_question(self.reviewer_id)

        response = self.get_json(
            '/contributionrightsdatahandler', params={
                'username': '******'
            })
        self.assertEqual(
            list(response.keys()),
            ['can_review_questions', 'can_submit_questions'])
        self.assertEqual(response['can_review_questions'], True)
        self.assertEqual(response['can_submit_questions'], True)
Esempio n. 2
0
    def setUp(self):
        super(CronMailReviewersContributorDashboardSuggestionsHandlerTests,
              self).setUp()
        self.signup(self.ADMIN_EMAIL, self.ADMIN_USERNAME)
        self.admin_id = self.get_user_id_from_email(self.ADMIN_EMAIL)
        self.set_admins([self.ADMIN_USERNAME])
        self.signup(self.AUTHOR_EMAIL, self.AUTHOR_USERNAME)
        self.author_id = self.get_user_id_from_email(self.AUTHOR_EMAIL)
        self.signup(self.REVIEWER_EMAIL, self.REVIEWER_USERNAME)
        self.reviewer_id = self.get_user_id_from_email(self.REVIEWER_EMAIL)
        user_services.update_email_preferences(self.reviewer_id, True, False,
                                               False, False)
        self.save_new_valid_exploration(self.target_id, self.author_id)
        # Give reviewer rights to review translations in the given language
        # code.
        user_services.allow_user_to_review_translation_in_language(
            self.reviewer_id, self.language_code)
        # Create a translation suggestion so that the reviewer has something
        # to be notified about.
        translation_suggestion = self._create_translation_suggestion()
        self.expected_reviewable_suggestion_email_info = (
            suggestion_services.
            create_reviewable_suggestion_email_info_from_suggestion(
                translation_suggestion))

        self.can_send_emails = self.swap(feconf, 'CAN_SEND_EMAILS', True)
        self.cannot_send_emails = self.swap(feconf, 'CAN_SEND_EMAILS', False)
        self.testapp_swap = self.swap(self, 'testapp',
                                      webtest.TestApp(main_cron.app))

        self.reviewers_suggestion_email_infos = []
        self.reviewer_ids = []
Esempio n. 3
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({})
Esempio n. 4
0
    def test_check_contribution_reviewer_by_translation_reviewer_role(self):
        self.login(self.TRANSLATION_ADMIN_EMAIL)
        user_services.allow_user_to_review_translation_in_language(
            self.translation_reviewer_id, 'hi')
        response = self.get_json('/getcontributorusershandler/translation',
                                 params={'language_code': 'hi'})

        self.assertEqual(len(response['usernames']), 1)
        self.assertTrue('translator' in response['usernames'])
        self.logout()
Esempio n. 5
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_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'))
    def test_translation_admin_check_contribution_reviewer_rights(self):
        self.login(self.TRANSLATION_ADMIN)
        response = self.get_json(
            '/contributionrightsdatahandler', params={
                'username': '******'
            })
        self.assertEqual(
            response.keys(), ['can_review_translation_for_language_codes'])
        self.assertEqual(
            response['can_review_translation_for_language_codes'], [])

        user_services.allow_user_to_review_translation_in_language(
            self.reviewer_id, 'hi')
        user_services.allow_user_to_review_question(self.reviewer_id)
        user_services.allow_user_to_submit_question(self.reviewer_id)

        response = self.get_json(
            '/contributionrightsdatahandler', params={
                'username': '******'
            })
        self.assertEqual(
            response.keys(), ['can_review_translation_for_language_codes'])
        self.assertEqual(
            response['can_review_translation_for_language_codes'], ['hi'])