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 get(self): filter_criterion = self.normalized_request.get('filter_criterion') if filter_criterion == feconf.USER_FILTER_CRITERION_ROLE: role = self.normalized_request.get( feconf.USER_FILTER_CRITERION_ROLE) role_services.log_role_query(self.user_id, feconf.ROLE_ACTION_VIEW_BY_ROLE, role=role) self.render_json( {'usernames': user_services.get_usernames_by_role(role)}) elif filter_criterion == feconf.USER_FILTER_CRITERION_USERNAME: username = self.normalized_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_settings = user_services.get_user_settings(user_id) user_roles = user_settings.roles managed_topic_ids = [] if feconf.ROLE_ID_TOPIC_MANAGER in user_roles: managed_topic_ids = [ rights.id for rights in topic_fetchers.get_topic_rights_with_user(user_id) ] user_roles_dict = { 'roles': user_roles, 'managed_topic_ids': managed_topic_ids, 'banned': user_settings.banned } self.render_json(user_roles_dict)
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.')
def test_get_usernames_by_role(self): user_ids = ['test1', 'test2', 'test3', 'test4'] usernames = ['name1', 'name2', 'name3', 'name4'] user_emails = [ '*****@*****.**', '*****@*****.**', '*****@*****.**', '*****@*****.**' ] for uid, email, name in zip(user_ids, user_emails, usernames): user_services.create_new_user(uid, email) user_services.set_username(uid, name) user_services.update_user_role(user_ids[0], feconf.ROLE_ID_MODERATOR) user_services.update_user_role(user_ids[1], feconf.ROLE_ID_MODERATOR) user_services.update_user_role(user_ids[2], feconf.ROLE_ID_BANNED_USER) user_services.update_user_role(user_ids[3], feconf.ROLE_ID_BANNED_USER) self.assertEqual( set(user_services.get_usernames_by_role(feconf.ROLE_ID_MODERATOR)), set(['name1', 'name2'])) self.assertEqual( set(user_services.get_usernames_by_role( feconf.ROLE_ID_BANNED_USER)), set(['name3', 'name4']))