def test_update_user_role(self): user_id = 'test_id' user_name = 'testname' user_email = '*****@*****.**' user_services.create_new_user(user_id, user_email) user_services.set_username(user_id, user_name) self.assertEqual(user_services.get_user_role_from_id(user_id), feconf.ROLE_EXPLORATION_EDITOR) user_services.update_user_role(user_id, feconf.ROLE_COLLECTION_EDITOR) self.assertEqual(user_services.get_user_role_from_id(user_id), feconf.ROLE_COLLECTION_EDITOR)
def get(self): view_method = self.request.get('method') if view_method == feconf.VIEW_METHOD_ROLE: role = self.request.get(feconf.VIEW_METHOD_ROLE) users_by_role = { username: role for username in user_services.get_usernames_by_role(role) } role_services.log_role_query(self.user_id, feconf.ROLE_ACTION_VIEW_BY_ROLE, role=role) self.render_json(users_by_role) elif view_method == feconf.VIEW_METHOD_USERNAME: username = self.request.get(feconf.VIEW_METHOD_USERNAME) user_id = user_services.get_user_id_from_username(username) role_services.log_role_query(self.user_id, feconf.ROLE_ACTION_VIEW_BY_USERNAME, username=username) if user_id is None: raise self.InvalidInputException( 'User with given username does not exist.') user_role_dict = { username: user_services.get_user_role_from_id(user_id) } self.render_json(user_role_dict) else: raise self.InvalidInputException('Invalid method to view roles.')
def post(self): username = self.payload.get('username') role = self.payload.get('role') topic_id = self.payload.get('topic_id') user_id = user_services.get_user_id_from_username(username) if user_id is None: raise self.InvalidInputException( 'User with given username does not exist.') if (user_services.get_user_role_from_id(user_id) == feconf.ROLE_ID_TOPIC_MANAGER): topic_services.deassign_user_from_all_topics( user_services.get_system_user(), user_id) user_services.update_user_role(user_id, role) role_services.log_role_query(self.user_id, feconf.ROLE_ACTION_UPDATE, role=role, username=username) if topic_id: user = user_services.UserActionsInfo(user_id) topic_services.assign_role(user_services.get_system_user(), user, topic_domain.ROLE_MANAGER, topic_id) self.render_json({})
def get(self): filter_criterion = self.request.get('filter_criterion') if filter_criterion == feconf.USER_FILTER_CRITERION_ROLE: role = self.request.get(feconf.USER_FILTER_CRITERION_ROLE) users_by_role = { username: role for username in user_services.get_usernames_by_role(role) } role_services.log_role_query(self.user_id, feconf.ROLE_ACTION_VIEW_BY_ROLE, role=role) self.render_json(users_by_role) elif filter_criterion == feconf.USER_FILTER_CRITERION_USERNAME: username = self.request.get(feconf.USER_FILTER_CRITERION_USERNAME) user_id = user_services.get_user_id_from_username(username) role_services.log_role_query(self.user_id, feconf.ROLE_ACTION_VIEW_BY_USERNAME, username=username) if user_id is None: raise self.InvalidInputException( 'User with given username does not exist.') user_role_dict = { username: user_services.get_user_role_from_id(user_id) } self.render_json(user_role_dict) else: raise self.InvalidInputException( 'Invalid filter criterion to view roles.')