; V@c@sdklZydklZWn ej odklZnXdefdYZdefdYZdefdYZd efd YZd S( (s Attribute(s Interface(sBases IUserFoldercBstZdZdZdZdZdZdZdZdZ d Z d Z d Z d Z d ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)e*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4Z6d5Z7d6Z8d7Z9RS(8NcCsdS(s Return a list of all possible user atom names in the system. Groups will be returned WITHOUT their prefix by this method. So, there might be a collision between a user name and a group name. [NOTA: This method is time-expensive !] N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getUserNames&scCsdS(s  Return a list of all possible user atom ids in the system. WARNING: Please see the id Vs. name consideration at the top of this document. So, groups will be returned WITH their prefix by this method [NOTA: This method is time-expensive !] N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getUserIds.scCsdS(s6Return the named user atom object or None NOTA: If no user can be found, we try to append a group prefix and fetch the user again before returning 'None'. This will ensure backward compatibility. So in fact, both group id and group name can be specified to this method. N((sname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetUser7scCsdS(sReturn a list of user atom objects in the users cache. In case of some UF implementations, the returned object may only be a subset of all possible users. In other words, you CANNOT assert that len(getUsers()) equals len(getUserNames()). With cache-support UserFolders, such as LDAPUserFolder, the getUser() method will return only cached user objects instead of fetching all possible users. So this method won't be very time-expensive, but won't be accurate ! N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetUsers?scCsdS(sReturn the user atom corresponding to the given id. If default is provided, return default if no user found, else raise an exception N((sidsdefault((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getUserByIdIscCsdS(sSame as getUserById() but works with a name instead of an id. If default is provided, return default if no user found, else raise an exception [NOTA: Theorically, the id is a handle, while the name is the actual login name. But difference between a user id and a user name is unsignificant in all current User Folder implementations... except for GROUPS.] N((snamesdefault((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getUserByNameNscCsdS(sReturn user ids which match the specified search_term. If search_term is an empty string, behaviour depends on the underlying user folder: it may return all users, return only cached users (for LDAPUF) or return no users. N((s search_term((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssearchUsersByNameXscCsdS(sReturn users whose id match the specified search_term. If search_term is an empty string, behaviour depends on the underlying user folder: it may return all users, return only cached users (for LDAPUF) or return no users. N((s search_term((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssearchUsersById^scCsdS(svReturn user ids whose 'attribute' match the specified search_term. If search_term is an empty string, behaviour depends on the underlying user folder: it may return all users, return only cached users (for LDAPUF) or return no users. This will return all users whose name contains search_term (whaterver its case). THIS METHOD MAY BE VERY EXPENSIVE ON USER FOLDER KINDS WHICH DO NOT PROVIDE A SEARCHING METHOD (ie. every UF kind except LDAPUF). 'attribute' can be 'id' or 'name' for all UF kinds, or anything else for LDAPUF. [NOTA: This method is time-expensive !] N((s attributes search_term((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssearchUsersByAttributeds cCsdS(sReturn group ids which match the specified search_term. If search_term is an empty string, behaviour depends on the underlying group folder: it may return all groups, return only cached groups (for LDAPUF) or return no groups. N((s search_term((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssearchGroupsByNameqscCsdS(sReturn groups whose id match the specified search_term. If search_term is an empty string, behaviour depends on the underlying group folder: it may return all groups, return only cached groups (for LDAPUF) or return no groups. N((s search_term((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssearchGroupsByIdwscCsdS(s}Return group ids whose 'attribute' match the specified search_term. If search_term is an empty string, behaviour depends on the underlying group folder: it may return all groups, return only cached groups (for LDAPUF) or return no groups. This will return all groups whose name contains search_term (whaterver its case). THIS METHOD MAY BE VERY EXPENSIVE ON GROUP FOLDER KINDS WHICH DO NOT PROVIDE A SEARCHING METHOD (ie. every UF kind except LDAPUF). 'attribute' can be 'id' or 'name' for all UF kinds, or anything else for LDAPUF. [NOTA: This method is time-expensive !] N((s attributes search_term((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssearchGroupsByAttribute}s cCsdS(s2Same as getUserNames() but without groups N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetPureUserNamesscCsdS(s0Same as getUserIds() but without groups N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetPureUserIdsscCsdS(s/Same as getUsers() but without groups. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getPureUsersscCsdS(sFSame as getUser() but forces returning a user and not a group N((sid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getPureUserscCsdS(s7Same as getUserNames() but without pure users. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupNamesscCsdS(s5Same as getUserIds() but without pure users. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupIdsscCsdS(sSame as getUsers() but without pure users. In case of some UF implementations, the returned object may only be a subset of all possible users. In other words, you CANNOT assert that len(getUsers()) equals len(getUserNames()). With cache-support UserFolders, such as LDAPUserFolder, the getUser() method will return only cached user objects instead of fetching all possible users. So this method won't be very time-expensive, but won't be accurate ! N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupsscCsdS(sKReturn the named group object or None. As usual, 'id' is prefixed. N((sname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetGroupscCsdS(s>Same as getUserById(id) but forces returning a group. N((sid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupByIdscCsdS(stSame as getUserByName(name) but forces returning a group. The specified name MUST NOT be prefixed ! N((sname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetGroupByNamescKsdS(sAPI method for creating a new user object. Note that not all user folder implementations support dynamic creation of user objects. Groups can be specified by name or by id (preferabily by name).N((snamespasswordsrolessdomainssgroupsskw((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderAddUserscKsdS(sAPI method for changing user object attributes. Note that not all user folder implementations support changing of user object attributes. Groups can be specified by name or by id (preferabily by name).N((snamespasswordsrolessdomainssgroupsskw((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderEditUserscCsdS(sAPI method for deleting one or more user atom objects. Note that not all user folder implementations support deletion of user objects.N((snames((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderDelUsersscKsdS(s-API method for creating a new group. N((snamesrolessgroupsskw((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderAddGroupscKsdS(s9API method for changing group object attributes. N((snamesrolessgroupsskw((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderEditGroupscCsdS(sAPI method for deleting one or more group objects. Implem. note : All ids must be prefixed with 'group_', so this method ends up beeing only a filter of non-prefixed ids before calling userFolderDelUsers(). N((snames((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderDelGroupsscCsdS(s(Change the roles of a user atom N((sidsroles((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys userSetRolesscCsdS(s&Append a role for a user atom N((sidsrole((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys userAddRolescCsdS(sRemove the role of a user atom. This will not, of course, affect implicitly-acquired roles from the user groups. N((sidsrole((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserRemoveRolescCsdS(s#Set the password of a user N((sids newPassword((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserSetPasswordscCsdS(sSet domains for a user N((sidsdomains((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserSetDomainsscCsdS(sGet domains for a user N((sid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserGetDomainsscCsdS(s"Append a domain to a user N((sidsdomain((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys userAddDomainscCsdS(s$Remove a domain from a user N((sidsdomain((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserRemoveDomainscCsdS(sSet the groups of a user. Groupnames are, as usual, not prefixed. However, a groupid can be given as a fallback N((suserids groupnames((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys userSetGroups scCsdS(sadd a group to a user atom. Groupnames are, as usual, not prefixed. However, a groupid can be given as a fallback N((sids groupname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys userAddGroupscCsdS(sremove a group from a user atom. Groupnames are, as usual, not prefixed. However, a groupid can be given as a fallback N((sids groupname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserRemoveGroupscCsdS(s=Set a common set of roles for a bunch of user atoms. N((srolessuserids((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssetRolesOnUsersscCsdS(sGets the user (and group) ids having the specified role... ...on the specified Zope object if it's not None ...on their own information if the object is None. NOTA: THIS METHOD IS VERY EXPENSIVE. N((srolesobject((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetUsersOfRole&scCsdS(s"Alias for user.getRoles() N((suserid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetRolesOfUser-scCsdS(sZAdd a new role. The role will be appended, in fact, in GRUF's surrounding folder. N((srole((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderAddRole1scCsdS(sDelete roles. The removed roles will be removed from the UserFolder's users and groups as well, so this method can be very time consuming with a large number of users. N((sroles((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderDelRoles5scCsdS(s<List the roles defined at the top of GRUF's folder. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysuserFolderGetRoles;scCsdS(s%Set the members of the group N((sgroupidsuserids((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys setMembersAscCsdS(s Add a member to a group N((sgroupidsid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys addMemberEscCsdS(s%Remove a member from a group N((sgroupidsid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys removeMemberIscCsdS(sReturn true if the specified atom id is in the group. This is the contrary of IUserAtom.isInGroup(groupid). THIS CAN BE VERY EXPENSIVEN((sgroupidsid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys hasMemberMscCsdS(sReturn the list of member ids (groups and users) in this group. It will unmangle nested groups as well. THIS METHOD CAN BE VERY EXPENSIVE AS IT NEEDS TO FETCH ALL USERS. N((sgroupid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getMemberIdsRscCsdS(sSame as listMemberIds but only return user ids THIS METHOD CAN BE VERY EXPENSIVE AS IT NEEDS TO FETCH ALL USERS. N((sgroupid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetUserMemberIdsXscCsdS(sSame as listMemberUserIds but only return group ids. THIS METHOD CAN BE VERY EXPENSIVE AS IT NEEDS TO FETCH ALL USERS. N((sgroupid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetGroupMemberIds]scCsdS(sEnable or disable local role acquisition on the specified folder. If status is true, it will enable, else it will disable. N((sfoldersstatus((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysacquireLocalRolesdscCsdS(sKReturn true if the specified folder allows local role acquisition. N((sfolder((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysisLocalRoleAcquirediscCsdS(sgetAllLocalRoles(self, object): return a dictionnary {user: roles} of local roles defined AND herited at a certain point. This will handle lr-blocking as well. N((sobject((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetAllLocalRolesos(:s__name__s __module__s getUserNamess getUserIdssgetUsersgetUserss getUserByIds getUserByNamessearchUsersByNamessearchUsersByIdssearchUsersByAttributessearchGroupsByNamessearchGroupsByIdssearchGroupsByAttributesgetPureUserNamessgetPureUserIdss getPureUserss getPureUsers getGroupNamess getGroupIdss getGroupssgetGroups getGroupByIdsgetGroupByNamesuserFolderAddUsersuserFolderEditUsersuserFolderDelUserssuserFolderAddGroupsuserFolderEditGroupsuserFolderDelGroupss userSetRoless userAddRolesuserRemoveRolesuserSetPasswordsuserSetDomainssuserGetDomainss userAddDomainsuserRemoveDomains userSetGroupss userAddGroupsuserRemoveGroupssetRolesOnUserssNonesgetUsersOfRolesgetRolesOfUsersuserFolderAddRolesuserFolderDelRolessuserFolderGetRoless setMemberss addMembers removeMembers hasMembers getMemberIdssgetUserMemberIdssgetGroupMemberIdssacquireLocalRolessisLocalRoleAcquiredsgetAllLocalRoles(((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys IUserFoldersn                                                s IUserAtomcBstZdZddZdZdZdZdZdZdZ d Z d Z d Z d Z d ZedZedZdZdZdZdZdZdZdZdZdZdZdZRS(s^ This interface is an abstract representation of what both a User and a Group can do. icCsdS(sGet the ID of the user. The ID can be used, at least from Python, to get the user from the user's UserDatabase. If unprefixed, remove all prefixes in any case.N((s unprefixed((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetId|scCsdS(sAlias for getName() N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getUserNamescCsdS(sGet user's or group's name. For a user, the name can be set by the underlying user folder but usually id == name. For a group, the ID is prefixed, but the NAME is NOT prefixed by 'group_'. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetNamescCsdS(smReturn the list of roles assigned to a user atom. This will never return gruf-related roles. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetRolesscCsdS(sEGet a property's value. Will raise if not available. N((sname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getPropertyscCsdS(sPReturn true if the underlying user object has a value for the property. N((sname((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys hasPropertyscCsdS(sSet a property's value. As some user folders cannot set properties, this method is not guaranteed to work and will raise a NotImplementedError if the underlying user folder cannot store properties (or _this_ particular property) for a user. N((snamesvalue((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys setPropertyscCsdS(sChange user's roles N((sroles((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyssetRolesscCsdS(s"Append a role to the user N((srole((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysaddRolescCsdS(s+Remove a role from the user's ones N((srole((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys removeRolescCsdS(sReturn the list of roles assigned to the user, including local roles assigned in context of the passed in object.N((sobject((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetRolesInContextscCsdS(s;Check to see if a user has a given permission on an object.N((s permissionsobject((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyshas_permissionscCsdS(s|Check whether the user has access to object. The user must have one of the roles in object_roles to allow access.N((sobjects object_roles((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysallowedscCsdS(s1Check to see if a user has a given role or roles.N((srolessobject((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pyshas_rolescCsdS(s-Return true if this atom is a group. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysisGroupscCsdS(sReturn the names of the groups that the user or group is directly a member of. Return an empty list if the user or group doesn't belong to any group. Doesn't include transitive groups.N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupNamesscCsdS(sReturn the names of the groups that the user or group is a member of. Return an empty list if the user or group doesn't belong to any group. Doesn't include transitive groups.N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupIdsscCsdS(sgetAllGroupIds() alias. Return the IDS (not names) of the groups that the user or group is a member of. Return an empty list if the user or group doesn't belong to any group. THIS WILL INCLUDE TRANSITIVE GROUPS AS WELL.N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getGroupsscCsdS(sReturn the names of the groups that the user or group is a member of. Return an empty list if the user or group doesn't belong to any group. Include transitive groups.N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetAllGroupIdsscCsdS(sReturn the names of the groups that the user or group is directly a member of. Return an empty list if the user or group doesn't belong to any group. Include transitive groups.N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetAllGroupNamesscCsdS(saReturn true if the user is member of the specified group id (including transitive groups)N((sgroupid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys isInGroupscCsdS(s5Set 'groupids' groups for the user or group. N((sgroupids((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys setGroupsscCsdS(s7Append a group to the current object's groups. N((sgroupid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysaddGroupscCsdS(s0Remove a group from the object's groups N((sgroupid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys removeGroupscCsdS(sReturn group id WITHOUT group prefix. For a user, return regular user id. This method is essentially internal. N((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getRealIds(s__name__s __module__s__doc__sgetIds getUserNamesgetNamesgetRoless getPropertys hasPropertys setPropertyssetRolessaddRoles removeRolesgetRolesInContextshas_permissionsNonesallowedshas_rolesisGroups getGroupNamess getGroupIdss getGroupssgetAllGroupIdssgetAllGroupNamess isInGroups setGroupssaddGroups removeGroups getRealId(((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys IUserAtomvs4                        sIUsercBs;tZdZdZdZdZdZdZRS(sw A user is a user atom who can log itself on, and have additional properties such as domains and password. cCsdS(s1Return the list of domain restrictions for a userN((((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getDomainsscCsdS(sSet user's password N((s newPassword((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys setPasswordscCsdS(s%Replace domains for the user N((sdomains((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys setDomainsscCsdS(s%Append a domain for the user N((sdomain((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys addDomainscCsdS(s%Remove a domain for the user N((sdomain((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys removeDomain s(s__name__s __module__s__doc__s getDomainss setPasswords setDomainss addDomains removeDomain(((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysIUsers     sIGroupcBsMtZdZddZddZddZdZdZdZRS(s; A group is a user atom other atoms can belong to. icCsdS(spReturn the member ids (users and groups) of the atoms of this group. This method can be very expensive !N((s transitive((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys getMemberIds)scCsdS(s=Return the member ids (users only) of the users of this groupN((s transitive((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetUserMemberIds-scCsdS(s@Return the members ids (groups only) of the groups of this groupN((s transitive((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysgetGroupMemberIds0scCsdS(srReturn true if the specified atom id is in the group. This is the contrary of IUserAtom.isInGroup(groupid)N((sid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys hasMember3scCsdS(s Add a user the the current groupN((suserid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys addMember7scCsdS(s$Remove a user from the current groupN((suserid((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys removeMember:s( s__name__s __module__s__doc__s getMemberIdssgetUserMemberIdssgetGroupMemberIdss hasMembers addMembers removeMember(((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pysIGroup%s      N(s Interfaces Attributes ImportErrorsBases IUserFolders IUserAtomsIUsersIGroup(s IUserAtoms AttributesIGroups InterfacesIUsers IUserFolder((sZ/mnt/gmirror/ports/www/zope-groupuserfolder/work/GroupUserFolder/interfaces/IUserFolder.pys?s Y