Ejemplo n.º 1
0
    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({})
Ejemplo n.º 2
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({})
Ejemplo n.º 3
0
    def test_email_not_sent_if_reviewer_ids_is_empty(self):
        self.login(self.ADMIN_EMAIL, is_super_admin=True)
        config_services.set_property(
            'committer_id', 'contributor_dashboard_reviewer_emails_is_enabled',
            True)
        user_services.remove_translation_review_rights_in_language(
            self.reviewer_id, self.language_code)

        with self.can_send_emails, self.testapp_swap:
            with self.swap(
                    email_manager,
                    'send_mail_to_notify_contributor_dashboard_reviewers',
                    self._mock_send_contributor_dashboard_reviewers_emails):
                self.get_html_response(
                    '/cron/mail/reviewers/contributor_dashboard_suggestions')

        self.assertEqual(len(self.reviewer_ids), 0)
        self.assertEqual(len(self.reviewers_suggestion_email_infos), 0)

        self.logout()