[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