[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