def put(self): username = self.normalized_payload.get('username') action = self.normalized_payload.get('action') topic_id = self.normalized_payload.get('topic_id') user_settings = user_services.get_user_settings_from_username(username) if user_settings is None: raise self.InvalidInputException( 'User with given username does not exist.') user_id = user_settings.user_id if action == 'assign': if not feconf.ROLE_ID_TOPIC_MANAGER in user_settings.roles: user_services.add_user_role(user_id, feconf.ROLE_ID_TOPIC_MANAGER) topic_manager = user_services.get_user_actions_info(user_id) topic_services.assign_role(user_services.get_system_user(), topic_manager, topic_domain.ROLE_MANAGER, topic_id) elif action == 'deassign': topic_services.deassign_manager_role_from_topic( user_services.get_system_user(), user_id, topic_id) if not topic_fetchers.get_topic_rights_with_user(user_id): user_services.remove_user_role(user_id, feconf.ROLE_ID_TOPIC_MANAGER) self.render_json({})
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 test_get_all_topic_rights_of_user(self): topic_rights = topic_fetchers.get_topic_rights_with_user( self.user_id_a) self.assertEqual(len(topic_rights), 1) self.assertEqual(topic_rights[0].id, self.TOPIC_ID) self.assertEqual(topic_rights[0].manager_ids, [self.user_id_a])
def test_get_all_topic_rights_of_user(self) -> None: topic_rights: List[topic_domain.TopicRights] = ( topic_fetchers.get_topic_rights_with_user(self.user_id_a)) self.assertEqual(len(topic_rights), 1) self.assertEqual(topic_rights[0].id, self.TOPIC_ID) self.assertEqual(topic_rights[0].manager_ids, [self.user_id_a])
def test_get_all_topic_rights_of_user(self): topic_services.assign_role(self.user_admin, self.user_a, topic_domain.ROLE_MANAGER, self.TOPIC_ID) topic_rights = topic_fetchers.get_topic_rights_with_user( self.user_id_a) self.assertEqual(len(topic_rights), 1) self.assertEqual(topic_rights[0].id, self.TOPIC_ID) self.assertEqual(topic_rights[0].manager_ids, [self.user_id_a])
def deassign_user_from_all_topics(committer, user_id): """Deassigns given user from all topics assigned to them. Args: committer: UserActionsInfo. UserActionsInfo object for the user who is performing the action. user_id: str. The ID of the user. Raises: Exception. The committer does not have rights to modify a role. """ topic_rights_list = topic_fetchers.get_topic_rights_with_user(user_id) for topic_rights in topic_rights_list: topic_rights.manager_ids.remove(user_id) commit_cmds = [topic_domain.TopicRightsChange({ 'cmd': topic_domain.CMD_REMOVE_MANAGER_ROLE, 'removed_user_id': user_id })] save_topic_rights( topic_rights, committer.user_id, 'Removed all assigned topics from %s' % (user_id), commit_cmds)