def test_remove_question_reviewer(self): user_services.allow_user_to_review_question(self.question_reviewer_id) self.assertTrue(user_services.can_review_question_suggestions( self.question_reviewer_id)) self.login(self.QUESTION_ADMIN_EMAIL) self.delete_json( '/contributionrightshandler/question', params={ 'username': '******', }) self.assertFalse(user_services.can_review_question_suggestions( self.question_reviewer_id))
def test_add_question_reviewer(self): self.assertFalse(user_services.can_review_question_suggestions( self.question_reviewer_id)) self.login(self.QUESTION_ADMIN_EMAIL) csrf_token = self.get_new_csrf_token() self.post_json( '/contributionrightshandler/question', { 'username': '******' }, csrf_token=csrf_token) self.assertTrue(user_services.can_review_question_suggestions( self.question_reviewer_id))
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 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({})
def test_removing_unassigned_question_reviewer_raise_error(self): self.assertFalse( user_services.can_review_question_suggestions( self.question_reviewer_id)) self.login(self.QUESTION_ADMIN_EMAIL) response = self.delete_json('/contributionrightshandler/question', params={'username': '******'}, expected_status_int=400) self.assertEqual(response['error'], 'question does not have rights to review question.')
def test_assigning_same_user_as_question_reviewer_raise_error(self): self.assertFalse(user_services.can_review_question_suggestions( self.question_reviewer_id)) self.login(self.QUESTION_ADMIN_EMAIL) csrf_token = self.get_new_csrf_token() response = self.post_json( '/contributionrightshandler/question', { 'username': '******' }, csrf_token=csrf_token) self.assertTrue(user_services.can_review_question_suggestions( self.question_reviewer_id)) response = self.post_json( '/contributionrightshandler/question', { 'username': '******' }, csrf_token=csrf_token, expected_status_int=400) self.assertEqual( response['error'], 'User question already has rights to review question.')
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 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({})