[Checkins] SVN: zope.component/trunk/ - Fixed a bug introduced by recent refactoring, where passing

Sidnei da Silva sidnei.da.silva at gmail.com
Mon Feb 22 17:48:32 EST 2010


Log message for revision 109324:
  - Fixed a bug introduced by recent refactoring, where passing
    CheckerPublic to securityAdapterFactory wrongly wrapped the factory
    into a LocatingUntrustedAdapterFactory.
  

Changed:
  U   zope.component/trunk/CHANGES.txt
  U   zope.component/trunk/setup.py
  U   zope.component/trunk/src/zope/component/__init__.py
  U   zope.component/trunk/src/zope/component/_api.py
  U   zope.component/trunk/src/zope/component/_declaration.py
  U   zope.component/trunk/src/zope/component/event.py
  U   zope.component/trunk/src/zope/component/eventtesting.py
  U   zope.component/trunk/src/zope/component/factory.py
  U   zope.component/trunk/src/zope/component/globalregistry.py
  U   zope.component/trunk/src/zope/component/interface.py
  U   zope.component/trunk/src/zope/component/interfaces.py
  U   zope.component/trunk/src/zope/component/nexttesting.py
  U   zope.component/trunk/src/zope/component/persistentregistry.py
  U   zope.component/trunk/src/zope/component/registry.py
  U   zope.component/trunk/src/zope/component/security.py
  U   zope.component/trunk/src/zope/component/standalonetests.py
  U   zope.component/trunk/src/zope/component/testfiles/adapter.py
  U   zope.component/trunk/src/zope/component/testfiles/components.py
  U   zope.component/trunk/src/zope/component/testfiles/views.py
  U   zope.component/trunk/src/zope/component/testing.py
  U   zope.component/trunk/src/zope/component/tests.py
  U   zope.component/trunk/src/zope/component/zcml.py
  U   zope.component/trunk/src/zope/component/zcml.txt

-=-
Modified: zope.component/trunk/CHANGES.txt
===================================================================
--- zope.component/trunk/CHANGES.txt	2010-02-22 22:43:18 UTC (rev 109323)
+++ zope.component/trunk/CHANGES.txt	2010-02-22 22:48:31 UTC (rev 109324)
@@ -4,9 +4,10 @@
 3.9.2 (unreleased)
 ==================
 
-- Nothing changed yet.
+- Fixed a bug introduced by recent refactoring, where passing
+  CheckerPublic to securityAdapterFactory wrongly wrapped the factory
+  into a LocatingUntrustedAdapterFactory.
 
-
 3.9.1 (2010-01-21)
 ==================
 

Modified: zope.component/trunk/src/zope/component/security.py
===================================================================
--- zope.component/trunk/src/zope/component/security.py	2010-02-22 22:43:18 UTC (rev 109323)
+++ zope.component/trunk/src/zope/component/security.py	2010-02-22 22:48:31 UTC (rev 109324)
@@ -86,7 +86,85 @@
     return factory
 
 def securityAdapterFactory(factory, permission, locate, trusted):
-    if locate or (permission is not None and permission != PublicPermission):
+    """
+    If a permission is provided when wrapping the adapter, it will be
+    wrapped in a LocatingAdapterFactory.
+
+      >>> class Factory:
+      ...     pass
+
+    If both locate and trusted are False and a non-public
+    permission is provided, then the factory is wrapped into a
+    LocatingUntrustedAdapterFactory:
+
+      >>> factory = securityAdapterFactory(Factory, 'zope.AnotherPermission',
+      ...    locate=False, trusted=False)
+
+      >>> isinstance(factory, LocatingUntrustedAdapterFactory)
+      True
+
+    If a PublicPermission is provided, then the factory is not touched.
+
+      >>> factory = securityAdapterFactory(Factory, PublicPermission,
+      ...    locate=False, trusted=False)
+
+      >>> factory is Factory
+      True
+
+    Same for CheckerPublic:
+
+      >>> factory = securityAdapterFactory(Factory, CheckerPublic,
+      ...    locate=False, trusted=False)
+
+      >>> factory is Factory
+      True
+
+    If the permission is None, the factory isn't touched:
+
+      >>> factory = securityAdapterFactory(Factory, None,
+      ...    locate=False, trusted=False)
+
+      >>> factory is Factory
+      True
+
+    If the factory is trusted and a no permission is provided then the
+    adapter is wrapped into a TrustedAdapterFactory:
+
+      >>> factory = securityAdapterFactory(Factory, None,
+      ...    locate=False, trusted=True)
+
+      >>> isinstance(factory, TrustedAdapterFactory)
+      True
+
+    Same for PublicPermission:
+
+      >>> factory = securityAdapterFactory(Factory, PublicPermission,
+      ...    locate=False, trusted=True)
+
+      >>> isinstance(factory, TrustedAdapterFactory)
+      True
+
+    Same for CheckerPublic:
+
+      >>> factory = securityAdapterFactory(Factory, CheckerPublic,
+      ...    locate=False, trusted=True)
+
+      >>> isinstance(factory, TrustedAdapterFactory)
+      True
+
+    If the factory is trusted and a locate is true, then the
+    adapter is wrapped into a LocatingTrustedAdapterFactory:
+
+      >>> factory = securityAdapterFactory(Factory, 'zope.AnotherPermission',
+      ...    locate=True, trusted=True)
+
+      >>> isinstance(factory, LocatingTrustedAdapterFactory)
+      True
+
+    """
+    if permission == PublicPermission:
+        permission = CheckerPublic
+    if locate or (permission is not None and permission is not CheckerPublic):
         if trusted:
             return LocatingTrustedAdapterFactory(factory)
         else:

Modified: zope.component/trunk/src/zope/component/tests.py
===================================================================
--- zope.component/trunk/src/zope/component/tests.py	2010-02-22 22:43:18 UTC (rev 109323)
+++ zope.component/trunk/src/zope/component/tests.py	2010-02-22 22:48:31 UTC (rev 109324)
@@ -1704,6 +1704,7 @@
                              setUp=setUp, tearDown=tearDown),
         doctest.DocFileSuite('event.txt',
                              setUp=setUp, tearDown=tearDown),
+        doctest.DocTestSuite('zope.component.security'),
         doctest.DocFileSuite('zcml.txt', checker=checker,
                              setUp=setUp, tearDown=tearDown),
         doctest.DocFileSuite('testlayer.txt',

Modified: zope.component/trunk/src/zope/component/zcml.txt
===================================================================
--- zope.component/trunk/src/zope/component/zcml.txt	2010-02-22 22:43:18 UTC (rev 109323)
+++ zope.component/trunk/src/zope/component/zcml.txt	2010-02-22 22:48:31 UTC (rev 109324)
@@ -126,6 +126,7 @@
   ZopeXMLConfigurationError: File "<string>", line 4.2-8.8
       ValueError: No factory specified
 
+
 Declaring ``for`` and ``provides`` in Python
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 



More information about the checkins mailing list