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)
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 = []
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({})
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()
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'])