diff --git a/security/browser/manage_workspace.pt b/security/browser/manage_workspace.pt index b31a4f7..406a256 100644 --- a/security/browser/manage_workspace.pt +++ b/security/browser/manage_workspace.pt @@ -1,6 +1,25 @@ + + + + +

Define Workspace Properties

@@ -54,7 +73,7 @@

Assign Permissions to Roles for Children of this Object


-
+ diff --git a/security/common.py b/security/common.py index 13e3835..7cc998a 100644 --- a/security/common.py +++ b/security/common.py @@ -28,6 +28,7 @@ from zope.app.security.settings import Allow, Deny, Unset from zope.cachedescriptors.property import Lazy from zope.interface import implements from zope.lifecycleevent import IObjectCreatedEvent, IObjectModifiedEvent +from zope.location.interfaces import IRoot from zope.security import canAccess, canWrite from zope.security import checkPermission as baseCheckPermission from zope.security.management import getInteraction @@ -219,6 +220,16 @@ class WorkspaceInformation(Persistent): def getParent(self): return self.__parent__ + def getParents(self): + parents = [] + w = self.__parent__ + while w is not None: + parents.append(w) + w = w.__parent__ + if parents and IRoot.providedBy(parents[-1]): + return parents + raise TypeError("Not enough context information to get all parents") + def getWorkspaceGroup(obj, predicate): wsi = obj.workspaceInformation