X-Git-Url: https://scm.cri.ensmp.fr/git/GroupUserFolder.git/blobdiff_plain/e9d14b6b5cc9cd4775c60cb340b5c4c787536fc3..3e1ba4932c34812cf2f6f3569b0f0dbea97b7a0b:/Products/GroupUserFolder/interfaces/portal_groups.py diff --git a/Products/GroupUserFolder/interfaces/portal_groups.py b/Products/GroupUserFolder/interfaces/portal_groups.py new file mode 100644 index 0000000..39f0766 --- /dev/null +++ b/Products/GroupUserFolder/interfaces/portal_groups.py @@ -0,0 +1,139 @@ +# -*- coding: utf-8 -*- +## GroupUserFolder +## Copyright (C)2006 Ingeniweb + +## This program is free software; you can redistribute it and/or modify +## it under the terms of the GNU General Public License as published by +## the Free Software Foundation; either version 2 of the License, or +## (at your option) any later version. + +## This program is distributed in the hope that it will be useful, +## but WITHOUT ANY WARRANTY; without even the implied warranty of +## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +## GNU General Public License for more details. + +## You should have received a copy of the GNU General Public License +## along with this program; see the file COPYING. If not, write to the +## Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +## Copyright (c) 2003 The Connexions Project, All Rights Reserved +## initially written by J Cameron Cooper, 11 June 2003 +## concept with Brent Hendricks, George Runyan +"""Groups tool interface + +Goes along the lines of portal_membership, but for groups. +""" +__version__ = "$Revision: $" +# $Source: $ +# $Id: portal_groups.py 30098 2006-09-08 12:35:01Z encolpe $ +__docformat__ = 'restructuredtext' + + +from zope.interface import Interface, Attribute + +class portal_groups(Interface): + """Defines an interface for working with groups in an abstract manner. + Parallels the portal_membership interface of CMFCore""" +## id = Attribute('id','Must be set to "portal_groups"') + + def isGroup(u): + """Test if a user/group object is a group or not. + You must pass an object you get earlier with wrapUser() or wrapGroup() + """ + + def getGroupById(id): + """Returns the portal_groupdata-ish object for a group corresponding + to this id.""" + + def getGroupsByUserId(userid): + """Returns a list of the groups the user corresponding to 'userid' belongs to.""" + + def listGroups(): + """Returns a list of the available portal_groupdata-ish objects.""" + + def listGroupIds(): + """Returns a list of the available groups' ids (WITHOUT prefixes).""" + + def listGroupNames(): + """Returns a list of the available groups' names (ie. without prefixes).""" + +## def getPureUserNames(): +## """Get the usernames (ids) of only users. """ + +## def getPureUsers(): +## """Get the actual (unwrapped) user objects of only users. """ + + def searchForGroups(REQUEST, **kw): # maybe searchGroups()? + """Return a list of groups meeting certain conditions. """ + # arguments need to be better refined? + + def addGroup(id, roles = [], groups = [], **kw): + """Create a group with the supplied id, roles, and groups. + + Underlying user folder must support adding users via the usual Zope API. + Passwords for groups seem to be currently irrelevant in GRUF.""" + + def editGroup(id, roles = [], groups = [], **kw): + """Edit the given group with the supplied roles. + + Underlying user folder must support editing users via the usual Zope API. + Passwords for groups seem to be currently irrelevant in GRUF. + One can supply additional named parameters to set group properties.""" + + def removeGroups(ids, keep_workspaces=0): + """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.""" + + def setGroupOwnership(group, object): + """Make the object 'object' owned by group 'group' (a portal_groupdata-ish object)""" + + def setGroupWorkspacesFolder(id=""): + """ 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. """ + + def getGroupWorkspacesFolderId(): + """ 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. """ + + def getGroupWorkspacesFolder(): + """ 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. """ + + def toggleGroupWorkspacesCreation(): + """ Toggles the flag for creation of a GroupWorkspaces folder upon first + use of the group. """ + + def getGroupWorkspacesCreationFlag(): + """Return the (boolean) flag indicating whether the Groups Tool will create a group workspace + upon the next use of the group (if one doesn't exist). """ + + def getGroupWorkspaceType(): + """Return the Type (as in TypesTool) to make the GroupWorkspace.""" + + def setGroupWorkspaceType(type): + """Set the Type (as in TypesTool) to make the GroupWorkspace. Expects the name of a Type.""" + + def createGrouparea(id): + """Create a space in the portal for the given group, much like member home + folders.""" + + def getGroupareaFolder(id): + """Returns the object of the group's work area.""" + + def getGroupareaURL(id): + """Returns the full URL to the group's work area.""" + + # and various roles things...