Back to index

plone3  3.1.7
Public Member Functions | Public Attributes | Static Public Attributes | Static Private Attributes
GroupUserFolder.GroupsTool.GroupsTool Class Reference
Inheritance diagram for GroupUserFolder.GroupsTool.GroupsTool:
Inheritance graph
[legend]
Collaboration diagram for GroupUserFolder.GroupsTool.GroupsTool:
Collaboration graph
[legend]

List of all members.

Public Member Functions

def manage_setGroupWorkspacesFolder
def manage_setGroupWorkspaceType
def manage_setGroupWorkspaceContainerType
def getGroupById
def getGroupsByUserId
def listGroups
def listGroupIds
def listGroupNames
def isGroup
def searchForGroups
def addGroup
def editGroup
def removeGroups
def setGroupOwnership
def setGroupWorkspacesFolder
def getGroupWorkspacesFolderId
def getGroupWorkspacesFolderTitle
def getGroupWorkspacesFolder
def toggleGroupWorkspacesCreation
def getGroupWorkspacesCreationFlag
def createGrouparea
def getGroupWorkspaceType
def setGroupWorkspaceType
def getGroupWorkspaceContainerType
def setGroupWorkspaceContainerType
def getGroupareaFolder
def getGroupareaURL
def wrapGroup

Public Attributes

 groupworkspaces_id
 groupworkspaces_title
 groupWorkspacesCreationFlag
 groupWorkspaceType
 groupWorkspaceContainerType

Static Public Attributes

string id = 'portal_groups'
string meta_type = 'CMF Groups Tool'
tuple security = ClassSecurityInfo()
string groupworkspaces_id = "groups"
string groupworkspaces_title = "Groups"
int groupWorkspacesCreationFlag = 1
string groupWorkspaceType = "Folder"
string groupWorkspaceContainerType = "Folder"
tuple manage_options
tuple manage_overview = DTMLFile('dtml/explainGroupsTool', globals())
tuple manage_config = DTMLFile('dtml/configureGroupsTool', globals())
tuple addGroup = postonly(addGroup)
tuple editGroup = postonly(editGroup)
tuple removeGroups = postonly(removeGroups)
tuple setGroupOwnership = postonly(setGroupOwnership)

Static Private Attributes

tuple __implements__ = (IGroupsTool, ActionProviderBase.__implements__)
tuple _actions = ()

Detailed Description

This tool accesses group data through a GRUF acl_users object.

It can be replaced with something that groups member data in a
different way.

Definition at line 62 of file GroupsTool.py.


Member Function Documentation

def GroupUserFolder.GroupsTool.GroupsTool.addGroup (   self,
  id,
  roles = [],
  groups = [],
  REQUEST = None,
  args,
  kw 
)
Create a group, and a group workspace if the toggle is on, with the supplied id, roles, and domains.

Underlying user folder must support adding users via the usual Zope API.
Passwords for groups ARE irrelevant in GRUF.

Definition at line 241 of file GroupsTool.py.

00241 
00242     def addGroup(self, id, roles = [], groups = [], REQUEST=None, *args, **kw):
00243         """Create a group, and a group workspace if the toggle is on, with the supplied id, roles, and domains.
00244 
00245         Underlying user folder must support adding users via the usual Zope API.
00246         Passwords for groups ARE irrelevant in GRUF."""
00247         if id in self.listGroupIds():
00248             raise ValueError, "Group '%s' already exists." % (id, )
00249         self.acl_users.userFolderAddGroup(id, roles = roles, groups = groups )
00250         self.createGrouparea(id)
        self.getGroupById(id).setProperties(**kw)

Here is the call graph for this function:

Here is the caller graph for this function:

Create a space in the portal for the given group, much like member home
folders.

Definition at line 354 of file GroupsTool.py.

00354 
00355     def createGrouparea(self, id):
00356         """Create a space in the portal for the given group, much like member home
00357         folders."""
00358         parent = self.aq_inner.aq_parent
00359         workspaces = self.getGroupWorkspacesFolder()
00360         pt = getToolByName( self, 'portal_types' )
00361 
00362         if id and self.getGroupWorkspacesCreationFlag():
00363             if workspaces is None:
00364                 # add GroupWorkspaces folder
00365                 pt.constructContent(
00366                     type_name = self.getGroupWorkspaceContainerType(),
00367                     container = parent,
00368                     id = self.getGroupWorkspacesFolderId(),
00369                     )
00370                 workspaces = self.getGroupWorkspacesFolder()
00371                 workspaces.setTitle(self.getGroupWorkspacesFolderTitle())
00372                 workspaces.setDescription("Container for " + self.getGroupWorkspacesFolderId())
00373                 # how about ownership?
00374 
00375                 # this stuff like MembershipTool...
00376                 portal_catalog = getToolByName( self, 'portal_catalog' )
00377                 portal_catalog.unindexObject(workspaces)     # unindex GroupWorkspaces folder
00378                 workspaces._setProperty('right_slots', (), 'lines')
00379                 
00380             if workspaces is not None and not hasattr(workspaces.aq_base, id):
00381                 # add workspace to GroupWorkspaces folder
00382                 pt.constructContent(
00383                     type_name = self.getGroupWorkspaceType(),
00384                     container = workspaces,
00385                     id = id,
00386                     )
00387                 space = self.getGroupareaFolder(id)
00388                 space.setTitle("%s workspace" % id)
00389                 space.setDescription("Container for objects shared by this group")
00390 
00391                 if hasattr(space, 'setInitialGroup'):
00392                     # GroupSpaces can have their own policies regarding the group
00393                     # that they are created for.
00394                     user = self.getGroupById(id).getGroup()
00395                     if user is not None:
00396                         space.setInitialGroup(user)
00397                 else:
00398                     space.manage_delLocalRoles(space.users_with_local_role('Owner'))
00399                     self.setGroupOwnership(self.getGroupById(id), space)
00400 
00401                 # Hook to allow doing other things after grouparea creation.
00402                 notify_script = getattr(workspaces, 'notifyGroupAreaCreated', None)
00403                 if notify_script is not None:
00404                     notify_script()
00405 
00406                 # Re-indexation
00407                 portal_catalog = getToolByName( self, 'portal_catalog' )
00408                 portal_catalog.reindexObject(space)
 

Here is the call graph for this function:

Here is the caller graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.editGroup (   self,
  id,
  roles = None,
  groups = None,
  REQUEST = None,
  args,
  kw 
)
Edit the given group with the supplied password, roles, and domains.

Underlying user folder must support editing users via the usual Zope API.
Passwords for groups seem to be currently irrelevant in GRUF.

Definition at line 254 of file GroupsTool.py.

00254 
00255     def editGroup(self, id, roles = None, groups = None, REQUEST=None, *args, **kw):
00256         """Edit the given group with the supplied password, roles, and domains.
00257 
00258         Underlying user folder must support editing users via the usual Zope API.
00259         Passwords for groups seem to be currently irrelevant in GRUF."""
00260         self.acl_users.userFolderEditGroup(id, roles = roles, groups = groups, )
        self.getGroupById(id).setProperties(**kw)

Here is the call graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.getGroupareaFolder (   self,
  id = None,
  verifyPermission = 0 
)
Returns the object of the group's work area.

Definition at line 430 of file GroupsTool.py.

00430 
00431     def getGroupareaFolder(self, id=None, verifyPermission=0):
00432         """Returns the object of the group's work area."""
00433         if id is None:
00434             group = self.getAuthenticatedMember()
00435             if not hasattr(member, 'getGroupId'):
00436                 return None
00437             id = group.getGroupId()
00438         workspaces = self.getGroupWorkspacesFolder()
00439         if workspaces:
00440             try:
00441                 folder = workspaces[id]
00442                 if verifyPermission and not _checkPermission('View', folder):
00443                     # Don't return the folder if the user can't get to it.
00444                     return None
00445                 return folder
00446             except KeyError: pass
00447         return None

Here is the call graph for this function:

Here is the caller graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.getGroupareaURL (   self,
  id = None,
  verifyPermission = 0 
)
Returns the full URL to the group's work area.

Definition at line 449 of file GroupsTool.py.

00449 
00450     def getGroupareaURL(self, id=None, verifyPermission=0):
00451         """Returns the full URL to the group's work area."""
00452         ga = self.getGroupareaFolder(id, verifyPermission)
00453         if ga is not None:
00454             return ga.absolute_url()
00455         else:
00456             return None

Here is the call graph for this function:

Returns the portal_groupdata-ish object for a group corresponding to this id.

Definition at line 122 of file GroupsTool.py.

00122 
00123     def getGroupById(self, id):
00124         """
00125         Returns the portal_groupdata-ish object for a group corresponding to this id.
00126         """
00127         if id==None:
00128             return None
00129         g = self.acl_users.getGroupByName(id, None)
00130         if g is not None:
00131             g = self.wrapGroup(g)
00132         return g

Here is the call graph for this function:

Here is the caller graph for this function:

Return a list of the groups the user corresponding to 'userid' belongs to.

Definition at line 134 of file GroupsTool.py.

00134 
00135     def getGroupsByUserId(self, userid):
00136         """Return a list of the groups the user corresponding to 'userid' belongs to."""
00137         #log("getGroupsByUserId(%s)" % userid)
00138         user = self.acl_users.getUser(userid)
00139         #log("user '%s' is in groups %s" % (userid, user.getGroups()))
00140         if user:
00141             groups = user.getGroups() or []
00142         else:
00143             groups = []
00144         return [self.getGroupById(elt) for elt in groups]

Here is the call graph for this function:

Return the Type (as in TypesTool) to make the GroupWorkspace.

Definition at line 420 of file GroupsTool.py.

00420 
00421     def getGroupWorkspaceContainerType(self):
00422         """Return the Type (as in TypesTool) to make the GroupWorkspace."""
00423         return self.groupWorkspaceContainerType

Here is the caller graph for this function:

Return the (boolean) flag indicating whether the Groups Tool will create a group workspace
upon the creation of the group (if one doesn't exist already). 

Definition at line 348 of file GroupsTool.py.

00348 
00349     def getGroupWorkspacesCreationFlag(self):
00350         """Return the (boolean) flag indicating whether the Groups Tool will create a group workspace
00351         upon the creation of the group (if one doesn't exist already). """
00352         return self.groupWorkspacesCreationFlag

Here is the caller graph for this function:

Get the Group Workspaces folder object.

The Group Workspaces Folder contains all the group workspaces, just like the
Members folder contains all the member folders. 

Definition at line 326 of file GroupsTool.py.

00326 
00327     def getGroupWorkspacesFolder(self):
00328         """ Get the Group Workspaces folder object.
00329 
00330         The Group Workspaces Folder contains all the group workspaces, just like the
00331         Members folder contains all the member folders. """
00332         parent = self.aq_inner.aq_parent
00333         folder = getattr(parent, self.getGroupWorkspacesFolderId(), None)
00334         return folder

Here is the call graph for this function:

Here is the caller graph for this function:

Get the Group Workspaces folder object's id.

The Group Workspaces Folder contains all the group workspaces, just like the
Members folder contains all the member folders. 

Definition at line 312 of file GroupsTool.py.

00312 
00313     def getGroupWorkspacesFolderId(self):
00314         """ Get the Group Workspaces folder object's id.
00315 
00316         The Group Workspaces Folder contains all the group workspaces, just like the
00317         Members folder contains all the member folders. """
00318         return self.groupworkspaces_id

Here is the caller graph for this function:

Get the Group Workspaces folder object's title.

Definition at line 320 of file GroupsTool.py.

00320 
00321     def getGroupWorkspacesFolderTitle(self):
00322         """ Get the Group Workspaces folder object's title.
00323         """
00324         return self.groupworkspaces_title

Here is the caller graph for this function:

Return the Type (as in TypesTool) to make the GroupWorkspace.

Definition at line 410 of file GroupsTool.py.

00410 
00411     def getGroupWorkspaceType(self):
00412         """Return the Type (as in TypesTool) to make the GroupWorkspace."""
00413         return self.groupWorkspaceType

Here is the caller graph for this function:

Test if a user/group object is a group or not.
You must pass an object you get earlier with wrapUser() or wrapGroup()

Definition at line 161 of file GroupsTool.py.

00161 
00162     def isGroup(self, u):
00163         """Test if a user/group object is a group or not.
00164         You must pass an object you get earlier with wrapUser() or wrapGroup()
00165         """
00166         base = aq_base(u)
00167         if hasattr(base, "isGroup") and base.isGroup():
00168             return 1
00169         return 0

Here is the caller graph for this function:

Return a list of the available groups' ids as entered (without group prefixes).

Definition at line 151 of file GroupsTool.py.

00151 
00152     def listGroupIds(self):
00153         """Return a list of the available groups' ids as entered (without group prefixes)."""
00154         return self.acl_users.getGroupNames()

Here is the caller graph for this function:

Return a list of the available groups' ids as entered (without group prefixes).

Definition at line 156 of file GroupsTool.py.

00156 
00157     def listGroupNames(self):
00158         """Return a list of the available groups' ids as entered (without group prefixes)."""
00159         return self.acl_users.getGroupNames()

Return a list of the available portal_groupdata-ish objects.

Definition at line 146 of file GroupsTool.py.

00146 
00147     def listGroups(self):
00148         """Return a list of the available portal_groupdata-ish objects."""
00149         return [ self.wrapGroup(elt) for elt in self.acl_users.getGroups() ]

Here is the call graph for this function:

Here is the caller graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.manage_setGroupWorkspaceContainerType (   self,
  type = 'Folder',
  REQUEST = None 
)
ZMI method for workspace type set.

Definition at line 116 of file GroupsTool.py.

00116 
00117     def manage_setGroupWorkspaceContainerType(self, type='Folder', REQUEST=None):
00118         """ZMI method for workspace type set."""
00119         self.setGroupWorkspaceContainerType(type)
00120         return self.manage_config(manage_tabs_message="Group Workspaces container type set to %s" % type)

Here is the call graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.manage_setGroupWorkspacesFolder (   self,
  id = 'groups',
  title = 'Groups',
  REQUEST = None 
)
ZMI method for workspace container name set.

Definition at line 104 of file GroupsTool.py.

00104 
00105     def manage_setGroupWorkspacesFolder(self, id='groups', title='Groups', REQUEST=None):
00106         """ZMI method for workspace container name set."""
00107         self.setGroupWorkspacesFolder(id, title)
00108         return self.manage_config(manage_tabs_message="Workspaces folder name set to %s" % id)

Here is the call graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.manage_setGroupWorkspaceType (   self,
  type = 'Folder',
  REQUEST = None 
)
ZMI method for workspace type set.

Definition at line 110 of file GroupsTool.py.

00110 
00111     def manage_setGroupWorkspaceType(self, type='Folder', REQUEST=None):
00112         """ZMI method for workspace type set."""
00113         self.setGroupWorkspaceType(type)
00114         return self.manage_config(manage_tabs_message="Group Workspaces type set to %s" % type)

Here is the call graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.removeGroups (   self,
  ids,
  keep_workspaces = 0,
  REQUEST = None 
)
Remove the group in the provided list (if possible).

Will by default remove this group's GroupWorkspace if it exists. You may
turn this off by specifying keep_workspaces=true.
Underlying user folder must support removing users via the usual Zope API.

Definition at line 264 of file GroupsTool.py.

00264 
00265     def removeGroups(self, ids, keep_workspaces=0, REQUEST=None):
00266         """Remove the group in the provided list (if possible).
00267 
00268         Will by default remove this group's GroupWorkspace if it exists. You may
00269         turn this off by specifying keep_workspaces=true.
00270         Underlying user folder must support removing users via the usual Zope API."""
00271         for gid in ids:
00272             gdata = self.getGroupById(gid)
00273             gusers = gdata.getGroupMembers()
00274             for guser in gusers:
00275                 gdata.removeMember(guser.id)
00276 
00277         self.acl_users.userFolderDelGroups(ids)
00278         gwf = self.getGroupWorkspacesFolder()
00279         if not gwf: # _robert_
00280             return
00281         if not keep_workspaces:
00282             for id in ids:
00283                 if hasattr(aq_base(gwf), id):
                    gwf._delObject(id)

Here is the call graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.searchForGroups (   self,
  REQUEST = {},
  kw 
)
Return a list of groups meeting certain conditions. 

Definition at line 171 of file GroupsTool.py.

00171 
00172     def searchForGroups(self, REQUEST = {}, **kw):
00173         """Return a list of groups meeting certain conditions. """
00174         # arguments need to be better refined?
00175         if REQUEST:
00176             dict = REQUEST
00177         else:
00178             dict = kw
00179 
00180         name = dict.get('name', None)
00181         email = dict.get('email', None)
00182         roles = dict.get('roles', None)
00183         title = dict.get('title', None)
00184         title_or_name = dict.get('title_or_name', None)
00185         
00186         last_login_time = dict.get('last_login_time', None)
00187         #is_manager = self.checkPermission('Manage portal', self)
00188 
00189         if name:
00190             name = name.strip().lower()
00191         if not name:
00192             name = None
00193         if email:
00194             email = email.strip().lower()
00195         if not email:
00196             email = None
00197         if title:
00198             title = title.strip().lower()
00199         if title_or_name:
00200             title_or_name = title_or_name.strip().lower()
00201         if not title:
00202             title = None
00203 
00204         res = []
00205         portal = self.portal_url.getPortalObject()
00206         for g in portal.portal_groups.listGroups():
00207             #if not (g.listed or is_manager):
00208             #    continue
00209             if name:
00210                 if (g.getGroupName().lower().find(name) == -1) and (g.getGroupId().lower().find(name) == -1):
00211                     continue
00212             if email:
00213                 if g.email.lower().find(email) == -1:
00214                     continue
00215             if roles:
00216                 group_roles = g.getRoles()
00217                 found = 0
00218                 for r in roles:
00219                     if r in group_roles:
00220                         found = 1
00221                         break
00222                 if not found:
00223                     continue
00224             if title:
00225                 if g.title.lower().find(title) == -1:
00226                     continue
00227             if title_or_name:
00228                 # first search for title
00229                 if g.title.lower().find(title_or_name) == -1:
00230                     # not found, now search for name
00231                     if (g.getGroupName().lower().find(title_or_name) == -1) and (g.getGroupId().lower().find(title_or_name) == -1):
00232                         continue
00233                 
00234             if last_login_time:
00235                 if g.last_login_time < last_login_time:
00236                     continue
00237             res.append(g)
00238 
00239         return res

def GroupUserFolder.GroupsTool.GroupsTool.setGroupOwnership (   self,
  group,
  object,
  REQUEST = None 
)
Make the object 'object' owned by group 'group' (a portal_groupdata-ish object).

For GRUF this is easy. Others may have to re-implement.

Definition at line 287 of file GroupsTool.py.

00287 
00288     def setGroupOwnership(self, group, object, REQUEST=None):
00289         """Make the object 'object' owned by group 'group' (a portal_groupdata-ish object).
00290 
00291         For GRUF this is easy. Others may have to re-implement."""
00292         user = group.getGroup()
00293         if user is None:
00294             raise ValueError, "Invalid group: '%s'." % (group, )
00295         object.changeOwnership(user)
        object.manage_setLocalRoles(user.getId(), ['Owner'])
Set the Type (as in TypesTool) to make the GroupWorkspace.

Definition at line 425 of file GroupsTool.py.

00425 
00426     def setGroupWorkspaceContainerType(self, type):
00427         """Set the Type (as in TypesTool) to make the GroupWorkspace."""
00428         self.groupWorkspaceContainerType = type

Here is the caller graph for this function:

def GroupUserFolder.GroupsTool.GroupsTool.setGroupWorkspacesFolder (   self,
  id = "",
  title = "" 
)
Set the location of the Group Workspaces folder by id.

The Group Workspaces Folder contains all the group workspaces, just like the
Members folder contains all the member folders.

 If anyone really cares, we can probably make the id work as a path as well,
 but for the moment it's only an id for a folder in the portal root, just like the
 corresponding MembershipTool functionality. 

Definition at line 299 of file GroupsTool.py.

00299 
00300     def setGroupWorkspacesFolder(self, id="", title=""):
00301         """ Set the location of the Group Workspaces folder by id.
00302 
00303         The Group Workspaces Folder contains all the group workspaces, just like the
00304         Members folder contains all the member folders.
00305 
00306          If anyone really cares, we can probably make the id work as a path as well,
00307          but for the moment it's only an id for a folder in the portal root, just like the
00308          corresponding MembershipTool functionality. """
00309         self.groupworkspaces_id = id.strip()
00310         self.groupworkspaces_title = title

Here is the caller graph for this function:

Set the Type (as in TypesTool) to make the GroupWorkspace.

Definition at line 415 of file GroupsTool.py.

00415 
00416     def setGroupWorkspaceType(self, type):
00417         """Set the Type (as in TypesTool) to make the GroupWorkspace."""
00418         self.groupWorkspaceType = type

Here is the caller graph for this function:

Toggles the flag for creation of a GroupWorkspaces folder upon creation of the group. 

Definition at line 336 of file GroupsTool.py.

00336 
00337     def toggleGroupWorkspacesCreation(self, REQUEST=None):
00338         """ Toggles the flag for creation of a GroupWorkspaces folder upon creation of the group. """
00339         if not hasattr(self, 'groupWorkspacesCreationFlag'):
00340             self.groupWorkspacesCreationFlag = 0
00341 
00342         self.groupWorkspacesCreationFlag = not self.groupWorkspacesCreationFlag
00343 
00344         m = self.groupWorkspacesCreationFlag and 'turned on' or 'turned off'
00345 
00346         return self.manage_config(manage_tabs_message="Workspaces creation %s" % m)

def GroupUserFolder.GroupsTool.GroupsTool.wrapGroup (   self,
  g,
  wrap_anon = 0 
)
Sets up the correct acquisition wrappers for a group
object and provides an opportunity for a portal_memberdata
tool to retrieve and store member data independently of
the user object.

Definition at line 458 of file GroupsTool.py.

00458 
00459     def wrapGroup(self, g, wrap_anon=0):
00460         ''' Sets up the correct acquisition wrappers for a group
00461         object and provides an opportunity for a portal_memberdata
00462         tool to retrieve and store member data independently of
00463         the user object.
00464         '''
00465         b = getattr(g, 'aq_base', None)
00466         if b is None:
00467             # u isn't wrapped at all.  Wrap it in self.acl_users.
00468             b = g
00469             g = g.__of__(self.acl_users)
00470         if (b is nobody and not wrap_anon) or hasattr(b, 'getMemberId'):
00471             # This user is either not recognized by acl_users or it is
00472             # already registered with something that implements the
00473             # member data tool at least partially.
00474             return g
00475 
00476         parent = self.aq_inner.aq_parent
00477         base = getattr(parent, 'aq_base', None)
00478         if hasattr(base, 'portal_groupdata'):
00479             # Get portal_groupdata to do the wrapping.
00480             Log(LOG_DEBUG, "parent", parent)
00481             gd = getToolByName(parent, 'portal_groupdata')
00482             Log(LOG_DEBUG, "group data", gd)
00483             try:
00484                 #log("wrapping group %s" % g)
00485                 portal_group = gd.wrapGroup(g)
00486                 return portal_group
00487             except ConflictError:
00488                 raise
00489             except:
00490                 import logging
00491                 logger = logging.getLogger('GroupUserFolder.GroupsTool')
00492                 logger.exception('Error during wrapGroup')
00493         # Failed.
00494         return g
00495 
00496 InitializeClass(GroupsTool)

Here is the call graph for this function:

Here is the caller graph for this function:


Member Data Documentation

tuple GroupUserFolder.GroupsTool.GroupsTool.__implements__ = (IGroupsTool, ActionProviderBase.__implements__) [static, private]

Definition at line 71 of file GroupsTool.py.

tuple GroupUserFolder.GroupsTool.GroupsTool._actions = () [static, private]

Definition at line 75 of file GroupsTool.py.

Definition at line 251 of file GroupsTool.py.

Definition at line 261 of file GroupsTool.py.

Definition at line 83 of file GroupsTool.py.

Definition at line 427 of file GroupsTool.py.

Definition at line 79 of file GroupsTool.py.

Definition at line 308 of file GroupsTool.py.

Definition at line 80 of file GroupsTool.py.

Definition at line 309 of file GroupsTool.py.

Definition at line 81 of file GroupsTool.py.

Definition at line 339 of file GroupsTool.py.

Definition at line 82 of file GroupsTool.py.

Definition at line 417 of file GroupsTool.py.

string GroupUserFolder.GroupsTool.GroupsTool.id = 'portal_groups' [static]

Definition at line 73 of file GroupsTool.py.

tuple GroupUserFolder.GroupsTool.GroupsTool.manage_config = DTMLFile('dtml/configureGroupsTool', globals()) [static]

Definition at line 101 of file GroupsTool.py.

Initial value:
(
            ( { 'label' : 'Configure'
                     , 'action' : 'manage_config'
                    },
                ) + ActionProviderBase.manage_options +
                ( { 'label' : 'Overview'
                     , 'action' : 'manage_overview'
                     },
                ) + SimpleItem.manage_options)

Definition at line 85 of file GroupsTool.py.

tuple GroupUserFolder.GroupsTool.GroupsTool.manage_overview = DTMLFile('dtml/explainGroupsTool', globals()) [static]

Definition at line 99 of file GroupsTool.py.

string GroupUserFolder.GroupsTool.GroupsTool.meta_type = 'CMF Groups Tool' [static]

Definition at line 74 of file GroupsTool.py.

Definition at line 284 of file GroupsTool.py.

tuple GroupUserFolder.GroupsTool.GroupsTool.security = ClassSecurityInfo() [static]

Definition at line 77 of file GroupsTool.py.

Definition at line 296 of file GroupsTool.py.


The documentation for this class was generated from the following file: