Exemplo n.º 1
0
    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({})
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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])
Exemplo n.º 4
0
    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])
Exemplo n.º 5
0
    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])
Exemplo n.º 6
0
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)