[Zope-Checkins] SVN: Zope/trunk/ Moved ``Products/Five/security.py`` into the AccessControl package.
Hanno Schlichting
hannosch at hannosch.eu
Thu Jul 30 16:25:29 EDT 2009
Log message for revision 102404:
Moved ``Products/Five/security.py`` into the AccessControl package.
Changed:
U Zope/trunk/doc/CHANGES.rst
U Zope/trunk/src/AccessControl/permissions.zcml
A Zope/trunk/src/AccessControl/security.py
U Zope/trunk/src/Products/Five/browser/metaconfigure.py
U Zope/trunk/src/Products/Five/browser/tests/test_menu.py
U Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py
U Zope/trunk/src/Products/Five/form/metaconfigure.py
U Zope/trunk/src/Products/Five/metaconfigure.py
U Zope/trunk/src/Products/Five/permissions.zcml
U Zope/trunk/src/Products/Five/security.py
U Zope/trunk/src/Products/Five/tests/test_security.py
U Zope/trunk/src/Products/Five/viewlet/metaconfigure.py
U Zope/trunk/src/Testing/ZopeTestCase/placeless.py
U Zope/trunk/src/Zope2/utilities/skel/etc/site.zcml
-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/doc/CHANGES.rst 2009-07-30 20:25:28 UTC (rev 102404)
@@ -11,6 +11,8 @@
Restructuring
+++++++++++++
+- Moved ``Products/Five/security.py`` into the AccessControl package.
+
- Moved ``Products/Five/traversing.zcml`` directly into the configure.zcml.
- Moved zope.security-style permission registrations from Products.Five into
Modified: Zope/trunk/src/AccessControl/permissions.zcml
===================================================================
--- Zope/trunk/src/AccessControl/permissions.zcml 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/AccessControl/permissions.zcml 2009-07-30 20:25:28 UTC (rev 102404)
@@ -1,6 +1,13 @@
<configure xmlns="http://namespaces.zope.org/zope"
i18n_domain="Zope2">
+ <!-- Create permissions declared in ZCML if they don't exist already -->
+ <subscriber
+ for="zope.security.interfaces.IPermission
+ zope.component.interfaces.IRegistered"
+ handler=".security.create_permission_from_permission_directive"
+ />
+
<permission
id="zope2.Public"
title="Public, everyone can access"
Copied: Zope/trunk/src/AccessControl/security.py (from rev 102379, Zope/trunk/src/Products/Five/security.py)
===================================================================
--- Zope/trunk/src/AccessControl/security.py (rev 0)
+++ Zope/trunk/src/AccessControl/security.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -0,0 +1,175 @@
+##############################################################################
+#
+# Copyright (c) 2004-2009 Zope Corporation and Contributors.
+# All Rights Reserved.
+#
+# This software is subject to the provisions of the Zope Public License,
+# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
+# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
+# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
+# FOR A PARTICULAR PURPOSE.
+#
+##############################################################################
+"""Security handling
+"""
+
+from zope.component import getUtility
+from zope.component import queryUtility
+from zope.interface import classProvides
+from zope.interface import implements
+from zope.security.checker import CheckerPublic
+from zope.security.interfaces import IInteraction
+from zope.security.interfaces import ISecurityPolicy
+from zope.security.interfaces import IPermission
+from zope.security.management import thread_local
+from zope.security.simplepolicies import ParanoidSecurityPolicy
+
+from AccessControl.SecurityInfo import ClassSecurityInfo
+from AccessControl.SecurityManagement import getSecurityManager
+from AccessControl.Permission import _registeredPermissions
+from AccessControl.Permission import pname
+
+import Products
+
+from AccessControl.Permission import ApplicationDefaultPermissions
+
+CheckerPublicId = 'zope.Public'
+CheckerPrivateId = 'zope2.Private'
+
+def getSecurityInfo(klass):
+ sec = {}
+ info = vars(klass)
+ if info.has_key('__ac_permissions__'):
+ sec['__ac_permissions__'] = info['__ac_permissions__']
+ for k, v in info.items():
+ if k.endswith('__roles__'):
+ sec[k] = v
+ return sec
+
+def clearSecurityInfo(klass):
+ sec = {}
+ info = vars(klass)
+ if info.has_key('__ac_permissions__'):
+ delattr(klass, '__ac_permissions__')
+ for k, v in info.items():
+ if k.endswith('__roles__'):
+ delattr(klass, k)
+
+def checkPermission(permission, object, interaction=None):
+ """Return whether security policy allows permission on object.
+
+ Arguments:
+ permission -- A permission name
+ object -- The object being accessed according to the permission
+ interaction -- This zope.security concept has no equivalent in Zope 2,
+ and is ignored.
+
+ checkPermission is guaranteed to return True if permission is
+ CheckerPublic or None.
+ """
+ if (permission in ('zope.Public', 'zope2.Public') or
+ permission is None or permission is CheckerPublic):
+ return True
+
+ if isinstance(permission, basestring):
+ permission = queryUtility(IPermission, unicode(permission))
+ if permission is None:
+ return False
+
+ if getSecurityManager().checkPermission(permission.title, object):
+ return True
+
+ return False
+
+class SecurityPolicy(ParanoidSecurityPolicy):
+ """Security policy that bridges between zope.security security mechanisms
+ and Zope 2's security policy.
+
+ Don't let the name of the base class fool you... This really just
+ delegates to Zope 2's security manager."""
+ classProvides(ISecurityPolicy)
+ implements(IInteraction)
+
+ def checkPermission(self, permission, object):
+ return checkPermission(permission, object)
+
+def newInteraction():
+ """Con zope.security to use Zope 2's checkPermission.
+
+ zope.security when it does a checkPermission will turn around and
+ ask the thread local interaction for the checkPermission method.
+ By making the interaction *be* Zope 2's security manager, we can
+ con zope.security into using Zope 2's checker...
+ """
+ if getattr(thread_local, 'interaction', None) is None:
+ thread_local.interaction = SecurityPolicy()
+
+def _getSecurity(klass):
+ # a Zope 2 class can contain some attribute that is an instance
+ # of ClassSecurityInfo. Zope 2 scans through things looking for
+ # an attribute that has the name __security_info__ first
+ info = vars(klass)
+ for k, v in info.items():
+ if hasattr(v, '__security_info__'):
+ return v
+ # we stuff the name ourselves as __security__, not security, as this
+ # could theoretically lead to name clashes, and doesn't matter for
+ # zope 2 anyway.
+ security = ClassSecurityInfo()
+ setattr(klass, '__security__', security)
+ return security
+
+def protectName(klass, name, permission_id):
+ """Protect the attribute 'name' on 'klass' using the given
+ permission"""
+ security = _getSecurity(klass)
+ # Zope 2 uses string, not unicode yet
+ name = str(name)
+ if permission_id == CheckerPublicId or permission_id is CheckerPublic:
+ # Sometimes, we already get a processed permission id, which
+ # can mean that 'zope.Public' has been interchanged for the
+ # CheckerPublic object
+ security.declarePublic(name)
+ elif permission_id == CheckerPrivateId:
+ security.declarePrivate(name)
+ else:
+ permission = getUtility(IPermission, name=permission_id)
+ # Zope 2 uses string, not unicode yet
+ perm = str(permission.title)
+ security.declareProtected(perm, name)
+
+def protectClass(klass, permission_id):
+ """Protect the whole class with the given permission"""
+ security = _getSecurity(klass)
+ if permission_id == CheckerPublicId or permission_id is CheckerPublic:
+ # Sometimes, we already get a processed permission id, which
+ # can mean that 'zope.Public' has been interchanged for the
+ # CheckerPublic object
+ security.declareObjectPublic()
+ elif permission_id == CheckerPrivateId:
+ security.declareObjectPrivate()
+ else:
+ permission = getUtility(IPermission, name=permission_id)
+ # Zope 2 uses string, not unicode yet
+ perm = str(permission.title)
+ security.declareObjectProtected(perm)
+
+def create_permission_from_permission_directive(permission, event):
+ """When a new IPermission utility is registered (via the <permission />
+ directive), create the equivalent Zope2 style permission.
+ """
+
+ global _registeredPermissions
+
+ # Zope 2 uses string, not unicode yet
+ zope2_permission = str(permission.title)
+ roles = ('Manager',)
+
+ if not _registeredPermissions.has_key(zope2_permission):
+ _registeredPermissions[zope2_permission] = 1
+
+ Products.__ac_permissions__ += ((zope2_permission, (), roles,),)
+
+ mangled = pname(zope2_permission)
+ setattr(ApplicationDefaultPermissions, mangled, roles)
Modified: Zope/trunk/src/Products/Five/browser/metaconfigure.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/metaconfigure.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/browser/metaconfigure.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -37,6 +37,12 @@
from zope.app.publisher.browser.viewmeta import _handle_menu
from zope.app.publisher.browser.viewmeta import _handle_for
+from AccessControl.security import getSecurityInfo
+from AccessControl.security import protectClass
+from AccessControl.security import protectName
+from AccessControl.security import CheckerPrivateId
+from App.class_init import InitializeClass
+
from Products.Five.browser import BrowserView
from Products.Five.browser.resource import FileResourceFactory
from Products.Five.browser.resource import ImageResourceFactory
@@ -44,12 +50,7 @@
from Products.Five.browser.resource import DirectoryResourceFactory
from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
from Products.Five.metaclass import makeClass
-from Products.Five.security import getSecurityInfo
-from Products.Five.security import protectClass
-from Products.Five.security import protectName
-from Products.Five.security import CheckerPrivateId
-from App.class_init import InitializeClass
def page(_context, name, permission, for_,
layer=IDefaultBrowserLayer, template=None, class_=None,
Modified: Zope/trunk/src/Products/Five/browser/tests/test_menu.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_menu.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/browser/tests/test_menu.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -30,7 +30,7 @@
>>> zcml.load_config("permissions.zcml", AccessControl)
>>> zcml.load_config('menu.zcml', package=Products.Five.browser.tests)
- >>> from Products.Five.security import newInteraction
+ >>> from AccessControl.security import newInteraction
>>> newInteraction()
Now for some actual testing... Let's look up the menu we registered:
Modified: Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/browser/tests/test_zope3security.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -11,7 +11,7 @@
... xmlns="http://namespaces.zope.org/zope"
... xmlns:browser="http://namespaces.zope.org/browser">
... <securityPolicy
- ... component="Products.Five.security.FiveSecurityPolicy" />
+ ... component="AccessControl.security.SecurityPolicy" />
... <configure package="Products.Five.browser.tests">
... <browser:page
... for="OFS.interfaces.IFolder"
Modified: Zope/trunk/src/Products/Five/form/metaconfigure.py
===================================================================
--- Zope/trunk/src/Products/Five/form/metaconfigure.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/form/metaconfigure.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -26,10 +26,12 @@
from zope.app.publisher.browser.menumeta import menuItemDirective
from zope.app.form.browser.metaconfigure import BaseFormDirective
from zope.browser.interfaces import IAdding
+from zope.publisher.interfaces.browser import IDefaultBrowserLayer
+from AccessControl.security import protectClass
+
from Products.Five.form import EditView, AddView
from Products.Five.metaclass import makeClass
-from Products.Five.security import protectClass
from Products.Five.browser.pagetemplatefile import ZopeTwoPageTemplateFile
from Products.Five.browser.metaconfigure import makeClassForTemplate
Modified: Zope/trunk/src/Products/Five/metaconfigure.py
===================================================================
--- Zope/trunk/src/Products/Five/metaconfigure.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/metaconfigure.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -17,8 +17,8 @@
"""
import warnings
from zope.security import metaconfigure
+from AccessControl.security import protectName
from App.class_init import InitializeClass
-from Products.Five.security import protectName
class ClassDirective(metaconfigure.ClassDirective):
Modified: Zope/trunk/src/Products/Five/permissions.zcml
===================================================================
--- Zope/trunk/src/Products/Five/permissions.zcml 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/permissions.zcml 2009-07-30 20:25:28 UTC (rev 102404)
@@ -1,20 +1,13 @@
<configure xmlns="http://namespaces.zope.org/zope"
i18n_domain="Five">
- <!-- Create permissions declared in ZCML if they don't exist already -->
- <subscriber
- for="zope.security.interfaces.IPermission
- zope.component.interfaces.IRegistered"
- handler=".security.create_permission_from_permission_directive"
- />
+ <include package="AccessControl" file="permissions.zcml" />
<permission
id="five.ManageSite"
title="Manage Five local sites"
/>
- <include package="AccessControl" file="permissions.zcml" />
-
<!-- CMF Core Permissions -->
<permission
Modified: Zope/trunk/src/Products/Five/security.py
===================================================================
--- Zope/trunk/src/Products/Five/security.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/security.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -18,165 +18,20 @@
from zope.deferredimport import deprecated
deprecated("Please import InitializeClass from App.class_init",
- initializeClass = 'App.class_init:InitializeClass',
- )
+ initializeClass = 'App.class_init:InitializeClass',
+)
-from zope.component import getUtility
-from zope.component import queryUtility
-from zope.interface import classProvides
-from zope.interface import implements
-from zope.security.checker import CheckerPublic
-from zope.security.interfaces import IInteraction
-from zope.security.interfaces import ISecurityPolicy
-from zope.security.interfaces import IPermission
-from zope.security.management import thread_local
-from zope.security.simplepolicies import ParanoidSecurityPolicy
-
-from AccessControl.SecurityInfo import ClassSecurityInfo
-from AccessControl.SecurityManagement import getSecurityManager
-from AccessControl.Permission import _registeredPermissions
-from AccessControl.Permission import pname
-
-import Products
-
-from AccessControl.Permission import ApplicationDefaultPermissions
-
-CheckerPublicId = 'zope.Public'
-CheckerPrivateId = 'zope2.Private'
-
-def getSecurityInfo(klass):
- sec = {}
- info = vars(klass)
- if info.has_key('__ac_permissions__'):
- sec['__ac_permissions__'] = info['__ac_permissions__']
- for k, v in info.items():
- if k.endswith('__roles__'):
- sec[k] = v
- return sec
-
-def clearSecurityInfo(klass):
- sec = {}
- info = vars(klass)
- if info.has_key('__ac_permissions__'):
- delattr(klass, '__ac_permissions__')
- for k, v in info.items():
- if k.endswith('__roles__'):
- delattr(klass, k)
-
-def checkPermission(permission, object, interaction=None):
- """Return whether security policy allows permission on object.
-
- Arguments:
- permission -- A permission name
- object -- The object being accessed according to the permission
- interaction -- This Zope 3 concept has no equivalent in Zope 2,
- and is ignored.
-
- checkPermission is guaranteed to return True if permission is
- CheckerPublic or None.
- """
- if (permission in ('zope.Public', 'zope2.Public') or
- permission is None or permission is CheckerPublic):
- return True
-
- if isinstance(permission, basestring):
- permission = queryUtility(IPermission, unicode(permission))
- if permission is None:
- return False
-
- if getSecurityManager().checkPermission(permission.title, object):
- return True
-
- return False
-
-class FiveSecurityPolicy(ParanoidSecurityPolicy):
- """Security policy that bridges between Zope 3 security mechanisms and
- Zope 2's security policy.
-
- Don't let the name of the base class fool you... This really just
- delegates to Zope 2's security manager."""
- classProvides(ISecurityPolicy)
- implements(IInteraction)
-
- def checkPermission(self, permission, object):
- return checkPermission(permission, object)
-
-def newInteraction():
- """Con Zope 3 to use Zope 2's checkPermission.
-
- Zope 3 when it does a checkPermission will turn around and
- ask the thread local interaction for the checkPermission method.
- By making the interaction *be* Zope 2's security manager, we can
- con Zope 3 into using Zope 2's checker...
- """
- if getattr(thread_local, 'interaction', None) is None:
- thread_local.interaction = FiveSecurityPolicy()
-
-def _getSecurity(klass):
- # a Zope 2 class can contain some attribute that is an instance
- # of ClassSecurityInfo. Zope 2 scans through things looking for
- # an attribute that has the name __security_info__ first
- info = vars(klass)
- for k, v in info.items():
- if hasattr(v, '__security_info__'):
- return v
- # we stuff the name ourselves as __security__, not security, as this
- # could theoretically lead to name clashes, and doesn't matter for
- # zope 2 anyway.
- security = ClassSecurityInfo()
- setattr(klass, '__security__', security)
- return security
-
-def protectName(klass, name, permission_id):
- """Protect the attribute 'name' on 'klass' using the given
- permission"""
- security = _getSecurity(klass)
- # Zope 2 uses string, not unicode yet
- name = str(name)
- if permission_id == CheckerPublicId or permission_id is CheckerPublic:
- # Sometimes, we already get a processed permission id, which
- # can mean that 'zope.Public' has been interchanged for the
- # CheckerPublic object
- security.declarePublic(name)
- elif permission_id == CheckerPrivateId:
- security.declarePrivate(name)
- else:
- permission = getUtility(IPermission, name=permission_id)
- # Zope 2 uses string, not unicode yet
- perm = str(permission.title)
- security.declareProtected(perm, name)
-
-def protectClass(klass, permission_id):
- """Protect the whole class with the given permission"""
- security = _getSecurity(klass)
- if permission_id == CheckerPublicId or permission_id is CheckerPublic:
- # Sometimes, we already get a processed permission id, which
- # can mean that 'zope.Public' has been interchanged for the
- # CheckerPublic object
- security.declareObjectPublic()
- elif permission_id == CheckerPrivateId:
- security.declareObjectPrivate()
- else:
- permission = getUtility(IPermission, name=permission_id)
- # Zope 2 uses string, not unicode yet
- perm = str(permission.title)
- security.declareObjectProtected(perm)
-
-def create_permission_from_permission_directive(permission, event):
- """When a new IPermission utility is registered (via the <permission />
- directive), create the equivalent Zope2 style permission.
- """
-
- global _registeredPermissions
-
- # Zope 2 uses string, not unicode yet
- zope2_permission = str(permission.title)
- roles = ('Manager',)
-
- if not _registeredPermissions.has_key(zope2_permission):
- _registeredPermissions[zope2_permission] = 1
-
- Products.__ac_permissions__ += ((zope2_permission, (), roles,),)
-
- mangled = pname(zope2_permission)
- setattr(ApplicationDefaultPermissions, mangled, roles)
+deprecated("Please import from AccessControl.security",
+ CheckerPublicId = 'AccessControl.security:CheckerPublicId',
+ CheckerPrivateId = 'AccessControl.security:CheckerPrivateId',
+ getSecurityInfo = 'AccessControl.security:getSecurityInfo',
+ clearSecurityInfo = 'AccessControl.security:clearSecurityInfo',
+ checkPermission = 'AccessControl.security:checkPermission',
+ FiveSecurityPolicy = 'AccessControl.security:SecurityPolicy',
+ newInteraction = 'AccessControl.security:newInteraction',
+ _getSecurity = 'AccessControl.security:_getSecurity',
+ protectName = 'AccessControl.security:protectName',
+ protectClass = 'AccessControl.security:protectClass',
+ create_permission_from_permission_directive = \
+ 'AccessControl.security:create_permission_from_permission_directive',
+)
Modified: Zope/trunk/src/Products/Five/tests/test_security.py
===================================================================
--- Zope/trunk/src/Products/Five/tests/test_security.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/tests/test_security.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -151,7 +151,7 @@
Before we end we should clean up after ourselves:
- >>> from Products.Five.security import clearSecurityInfo
+ >>> from AccessControl.security import clearSecurityInfo
>>> clearSecurityInfo(Dummy1)
>>> clearSecurityInfo(Dummy2)
@@ -292,8 +292,8 @@
has the permission to access an object. The function delegates to
the security policy's checkPermission() method.
- Five has the same function, Five.security.checkPermission, but in
- a Zope2-compatible implementation. It too uses the currently
+ Zope2 has the same function, AccessControl.security.checkPermission,
+ but in a Zope2-compatible implementation. It too uses the currently
active security policy of Zope 2 for the actual permission
checking.
@@ -310,7 +310,7 @@
a) zope2.Public (which should always be available to everyone)
- >>> from Products.Five.security import checkPermission
+ >>> from AccessControl.security import checkPermission
>>> checkPermission('zope2.Public', self.folder)
True
@@ -342,7 +342,7 @@
>>> from zope.security.management import endInteraction
>>> endInteraction()
- >>> from Products.Five.security import newInteraction
+ >>> from AccessControl.security import newInteraction
>>> newInteraction()
a) zope2.Public (which should always be available to everyone)
Modified: Zope/trunk/src/Products/Five/viewlet/metaconfigure.py
===================================================================
--- Zope/trunk/src/Products/Five/viewlet/metaconfigure.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Products/Five/viewlet/metaconfigure.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -20,17 +20,15 @@
from zope.app.publisher.browser import viewmeta
from zope.component import zcml
from zope.configuration.exceptions import ConfigurationError
-from zope.interface import classImplements
-from zope.interface import implements
from zope.interface import Interface
from zope.browser.interfaces import IBrowserView
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
from zope.viewlet import interfaces
+from AccessControl.security import protectClass
+from AccessControl.security import protectName
from App.class_init import InitializeClass
-from App.special_dtml import DTMLFile
-from Products.Five.security import protectClass
-from Products.Five.security import protectName
+
from Products.Five.viewlet import manager
from Products.Five.viewlet import viewlet
@@ -157,9 +155,6 @@
new_class = type(class_.__name__,
(class_, viewlet.SimpleAttributeViewlet), cdict)
- if hasattr(class_, '__implements__'):
- classImplements(new_class, IBrowserPublisher)
-
else:
# Create a new class for the viewlet template alone.
new_class = viewlet.SimpleViewletClass(template, name=name,
Modified: Zope/trunk/src/Testing/ZopeTestCase/placeless.py
===================================================================
--- Zope/trunk/src/Testing/ZopeTestCase/placeless.py 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Testing/ZopeTestCase/placeless.py 2009-07-30 20:25:28 UTC (rev 102404)
@@ -19,8 +19,8 @@
from zope.component.eventtesting import PlacelessSetup as EventPlacelessSetup
from zope.container.testing import PlacelessSetup as ContainerPlacelessSetup
from zope.i18n.testing import PlacelessSetup as I18nPlacelessSetup
-from zope.security.management import newInteraction
from zope.security.testing import addCheckerPublic
+from AccessControl.security import newInteraction
class PlacelessSetup(CAPlacelessSetup,
Modified: Zope/trunk/src/Zope2/utilities/skel/etc/site.zcml
===================================================================
--- Zope/trunk/src/Zope2/utilities/skel/etc/site.zcml 2009-07-30 20:17:45 UTC (rev 102403)
+++ Zope/trunk/src/Zope2/utilities/skel/etc/site.zcml 2009-07-30 20:25:28 UTC (rev 102404)
@@ -21,6 +21,6 @@
<securityPolicy
- component="Products.Five.security.FiveSecurityPolicy" />
+ component="AccessControl.security.SecurityPolicy" />
</configure>
More information about the Zope-Checkins
mailing list