[Checkins] SVN: zope.security/trunk/ Fixed bug:
Jim Fulton
jim at zope.com
Tue Aug 14 13:52:16 EDT 2007
Log message for revision 78815:
Fixed bug:
The special system_user object wasn't actually a user (principal).
Also cleaned up some circular import issues.
Changed:
U zope.security/trunk/CHANGES.txt
U zope.security/trunk/setup.py
U zope.security/trunk/src/zope/security/__init__.py
A zope.security/trunk/src/zope/security/_definitions.py
U zope.security/trunk/src/zope/security/checker.py
U zope.security/trunk/src/zope/security/management.py
U zope.security/trunk/src/zope/security/simplepolicies.py
-=-
Modified: zope.security/trunk/CHANGES.txt
===================================================================
--- zope.security/trunk/CHANGES.txt 2007-08-14 17:52:11 UTC (rev 78814)
+++ zope.security/trunk/CHANGES.txt 2007-08-14 17:52:16 UTC (rev 78815)
@@ -1,9 +1,15 @@
zope.security package changelog
===============================
-Next release
-------------
+3.4.0b3 - 2007/08/14
+--------------------
+Bugs fixed:
+-----------
+
+- zope.security.management.system_user wasn't a valid principal
+ (didn't provide IPrincipal).
+
- zope.security now works on Python 2.5
- Fixed inclusion of doctest to use the doctest module from zope.testing. Now
@@ -12,6 +18,9 @@
3.4.0b2 - 2007/06/15
--------------------
+Bugs fixed:
+-----------
+
- removed stack extraction in newInteraction. When using eggs this is an
extremly expensive function. The publisher is now more than 10 times faster
when using eggs and about twice as fast with a zope trunk checkout.
Modified: zope.security/trunk/setup.py
===================================================================
--- zope.security/trunk/setup.py 2007-08-14 17:52:11 UTC (rev 78814)
+++ zope.security/trunk/setup.py 2007-08-14 17:52:16 UTC (rev 78815)
@@ -47,13 +47,13 @@
'pytz',
'zope.component',
'zope.configuration',
+ 'zope.deferredimport',
'zope.exceptions',
'zope.i18nmessageid',
'zope.interface',
'zope.location>=3.4.0b1.dev-r75152',
'zope.proxy',
'zope.schema',
- 'zope.thread',
],
include_package_data = True,
extras_require = {'untrustedpython': ["RestrictedPython"]},
Modified: zope.security/trunk/src/zope/security/__init__.py
===================================================================
--- zope.security/trunk/src/zope/security/__init__.py 2007-08-14 17:52:11 UTC (rev 78814)
+++ zope.security/trunk/src/zope/security/__init__.py 2007-08-14 17:52:16 UTC (rev 78815)
@@ -17,9 +17,10 @@
"""
-# TODO: There's a circular import problem with the proxy package.
-# The proxy framework needs some refactoring, but not today.
-import zope.proxy
+import zope.deferredimport
-from zope.security.management import checkPermission
-from zope.security.checker import canWrite, canAccess
+zope.deferredimport.define(
+ checkPermission = 'zope.security.management:checkPermission',
+ canWrite = 'zope.security.checker:canWrite',
+ canAccess = 'zope.security.checker:canAccess',
+ )
Added: zope.security/trunk/src/zope/security/_definitions.py
===================================================================
--- zope.security/trunk/src/zope/security/_definitions.py (rev 0)
+++ zope.security/trunk/src/zope/security/_definitions.py 2007-08-14 17:52:16 UTC (rev 78815)
@@ -0,0 +1,29 @@
+##############################################################################
+#
+# Copyright (c) 2005 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.
+#
+##############################################################################
+"""Common definitions to avoid circular imports
+"""
+
+import threading
+
+import zope.interface
+
+import zope.security.interfaces
+
+thread_local = threading.local()
+
+class system_user(object):
+ zope.interface.classProvides(zope.security.interfaces.IPrincipal)
+ id = __name__ + u'.system_user'
+ title = u'Special System User that typically has all permissions'
+ description = u''
Property changes on: zope.security/trunk/src/zope/security/_definitions.py
___________________________________________________________________
Name: svn:keywords
+ Id
Name: svn:eol-style
+ native
Modified: zope.security/trunk/src/zope/security/checker.py
===================================================================
--- zope.security/trunk/src/zope/security/checker.py 2007-08-14 17:52:11 UTC (rev 78814)
+++ zope.security/trunk/src/zope/security/checker.py 2007-08-14 17:52:16 UTC (rev 78815)
@@ -44,7 +44,7 @@
from zope.security.interfaces import IChecker, INameBasedChecker
from zope.security.interfaces import ISecurityProxyFactory
from zope.security.interfaces import Unauthorized, ForbiddenAttribute
-from zope.security.management import thread_local
+from zope.security._definitions import thread_local
from zope.security._proxy import _Proxy as Proxy, getChecker
if os.environ.get('ZOPE_WATCH_CHECKERS'):
Modified: zope.security/trunk/src/zope/security/management.py
===================================================================
--- zope.security/trunk/src/zope/security/management.py 2007-08-14 17:52:11 UTC (rev 78814)
+++ zope.security/trunk/src/zope/security/management.py 2007-08-14 17:52:16 UTC (rev 78815)
@@ -15,21 +15,23 @@
$Id$
"""
-# Special system user that has all permissions
-# zope.security.simplepolicies needs it
-system_user = object()
-from zope.interface import moduleProvides
-from zope.security.interfaces import ISecurityManagement
-from zope.security.interfaces import IInteractionManagement
-from zope.security.interfaces import NoInteraction
+
+import zope.interface
import zope.thread
-thread_local = zope.thread.local()
+import zope.security.interfaces
-moduleProvides(ISecurityManagement, IInteractionManagement)
+from zope.security.checker import CheckerPublic
+from zope.security._definitions import thread_local, system_user
+from zope.security.simplepolicies import ParanoidSecurityPolicy
+_defaultPolicy = ParanoidSecurityPolicy
+zope.interface.moduleProvides(
+ zope.security.interfaces.ISecurityManagement,
+ zope.security.interfaces.IInteractionManagement)
+
def _clear():
global _defaultPolicy
_defaultPolicy = ParanoidSecurityPolicy
@@ -80,7 +82,7 @@
try:
return thread_local.interaction
except AttributeError:
- raise NoInteraction
+ raise zope.security.interfaces.NoInteraction
def newInteraction(*participations):
"""Start a new interaction."""
@@ -140,10 +142,3 @@
return interaction.checkPermission(permission, object)
addCleanUp(endInteraction)
-
-
-# circular imports are not fun
-
-from zope.security.checker import CheckerPublic
-from zope.security.simplepolicies import ParanoidSecurityPolicy
-_defaultPolicy = ParanoidSecurityPolicy
Modified: zope.security/trunk/src/zope/security/simplepolicies.py
===================================================================
--- zope.security/trunk/src/zope/security/simplepolicies.py 2007-08-14 17:52:11 UTC (rev 78814)
+++ zope.security/trunk/src/zope/security/simplepolicies.py 2007-08-14 17:52:16 UTC (rev 78815)
@@ -18,7 +18,7 @@
import zope.interface
from zope.security.checker import CheckerPublic
from zope.security.interfaces import IInteraction, ISecurityPolicy
-from zope.security.management import system_user
+from zope.security._definitions import system_user
class ParanoidSecurityPolicy(object):
zope.interface.implements(IInteraction)
More information about the Checkins
mailing list