def get_groups(username=None, user=None): """Get all groups or all groups filtered by user. Arguments ``username`` and ``user`` are mutually exclusive. You can either set one or the other, but not both. :param username: Username of the user for which to return groups. If set, only return groups that this user is member of. :type username: string :param user: User for which to return groups. If set, only return groups that this user is member of. :type user: MemberData object :returns: All groups (optionlly filtered by user) :rtype: List of GroupData objects :raises: UserNotFoundError :Example: :ref:`group_get_all_groups_example`, :ref:`group_get_users_groups_example` """ if username: user = user_get(username=username) if not user: raise UserNotFoundError group_tool = portal.get_tool('portal_groups') if user: groups = group_tool.getGroupsForPrincipal(user) return [get(groupname=group) for group in groups] return group_tool.listGroups()
def remove_user(groupname=None, group=None, username=None, user=None): """Remove the user from a group. Arguments ``groupname`` and ``group`` are mutually exclusive. You can either set one or the other, but not both. Arguments ``username`` and ``user`` are mutually exclusive. You can either set one or the other, but not both. :param groupname: Name of the group to remove the user from. :type groupname: string :param group: Group to remove the user from. :type group: GroupData object :param username: Username of the user to delete from the group. :type username: string :param user: User to delete from the group. :type user: MemberData object :raises: ValueError UserNotFoundError :Example: :ref:`group_remove_user_example` """ if username: user = user_get(username=username) if not user: raise UserNotFoundError user_id = user.id group_id = groupname or group.id portal_groups = portal.get_tool('portal_groups') portal_groups.removePrincipalFromGroup(user_id, group_id)