[Zope-Checkins] SVN: Zope/trunk/ Removed deprecated ``catalog-getObject-raises`` zope.conf option. The option was slated for removal in Zope 2.10.

Hanno Schlichting hannosch at hannosch.eu
Sun Aug 1 05:44:24 EDT 2010


Log message for revision 115301:
  Removed deprecated ``catalog-getObject-raises`` zope.conf option. The option was slated for removal in Zope 2.10.
  

Changed:
  U   Zope/trunk/doc/CHANGES.rst
  U   Zope/trunk/src/Products/ZCatalog/CatalogBrains.py
  U   Zope/trunk/src/Products/ZCatalog/tests/test_brains.py
  U   Zope/trunk/src/Products/ZCatalog/tests/test_catalog.py
  U   Zope/trunk/src/Zope2/Startup/handlers.py
  U   Zope/trunk/src/Zope2/Startup/zopeschema.xml

-=-
Modified: Zope/trunk/doc/CHANGES.rst
===================================================================
--- Zope/trunk/doc/CHANGES.rst	2010-08-01 09:35:51 UTC (rev 115300)
+++ Zope/trunk/doc/CHANGES.rst	2010-08-01 09:44:24 UTC (rev 115301)
@@ -35,6 +35,8 @@
 Restructuring
 +++++++++++++
 
+- Removed deprecated ``catalog-getObject-raises`` zope.conf option.
+
 - Removed unmaintained HelpSys documents from ZCatalog and PluginIndexes.
   Useful explanations are given inside the form templates.
 

Modified: Zope/trunk/src/Products/ZCatalog/CatalogBrains.py
===================================================================
--- Zope/trunk/src/Products/ZCatalog/CatalogBrains.py	2010-08-01 09:35:51 UTC (rev 115300)
+++ Zope/trunk/src/Products/ZCatalog/CatalogBrains.py	2010-08-01 09:44:24 UTC (rev 115301)
@@ -16,15 +16,10 @@
 import Acquisition
 from Acquisition import aq_parent
 import Record
-from ZODB.POSException import ConflictError
 
 from interfaces import ICatalogBrain
 
-# Switch for new behavior, raise exception instead of returning None.
-# Use 'catalog-getObject-raises off' in zope.conf to restore old behavior.
-GETOBJECT_RAISES = True
 
-
 class AbstractCatalogBrain(Record.Record, Acquisition.Implicit):
     """Abstract base brain that handles looking up attributes as
     required, and provides just enough smarts to let us get the URL, path,
@@ -51,14 +46,7 @@
 
         Same as getObject, but does not do security checks.
         """
-        try:
-            return aq_parent(self).unrestrictedTraverse(self.getPath())
-        except ConflictError:
-            raise
-        except Exception:
-            if GETOBJECT_RAISES:
-                raise
-            return None
+        return aq_parent(self).unrestrictedTraverse(self.getPath())
 
     def getObject(self, REQUEST=None):
         """Return the object for this record
@@ -76,26 +64,10 @@
             return None
         parent = aq_parent(self)
         if len(path) > 1:
-            try:
-                parent = parent.unrestrictedTraverse(path[:-1])
-            except ConflictError:
-                raise
-            except Exception:
-                if GETOBJECT_RAISES:
-                    raise
-                return None
+            parent = parent.unrestrictedTraverse(path[:-1])
 
-        try:
-            target = parent.restrictedTraverse(path[-1])
-        except ConflictError:
-            raise
-        except Exception:
-            if GETOBJECT_RAISES:
-                raise
-            return None
+        return parent.restrictedTraverse(path[-1])
 
-        return target
-
     def getRID(self):
         """Return the record ID for this object."""
         return self.data_record_id_

Modified: Zope/trunk/src/Products/ZCatalog/tests/test_brains.py
===================================================================
--- Zope/trunk/src/Products/ZCatalog/tests/test_brains.py	2010-08-01 09:35:51 UTC (rev 115300)
+++ Zope/trunk/src/Products/ZCatalog/tests/test_brains.py	2010-08-01 09:44:24 UTC (rev 115301)
@@ -99,28 +99,12 @@
         raise ConflictError
 
 
-class BrainsTestBase(object):
+class TestBrains(unittest.TestCase):
 
-    _old_flag = None
-
     def setUp(self):
         self.cat = DummyCatalog()
         self.cat.REQUEST = DummyRequest()
-        self._init_getOb_flag()
 
-    def tearDown(self):
-        if self._old_flag is not None:
-            self._restore_getOb_flag()
-
-    def _init_getOb_flag(self):
-        from Products.ZCatalog import CatalogBrains
-        self._old_flag = CatalogBrains.GETOBJECT_RAISES
-        CatalogBrains.GETOBJECT_RAISES = self._flag_value()
-
-    def _restore_getOb_flag(self):
-        from Products.ZCatalog import CatalogBrains
-        CatalogBrains.GETOBJECT_RAISES = self._old_flag
-
     def _makeBrain(self, rid):
         from Products.ZCatalog.CatalogBrains import AbstractCatalogBrain
 
@@ -165,12 +149,6 @@
         self.assertEqual(b.getPath(), '/conflicter')
         self.assertRaises(ConflictError, b.getObject)
 
-
-class TestBrains(BrainsTestBase, unittest.TestCase):
-
-    def _flag_value(self):
-        return True
-
     def testGetObjectRaisesUnauthorized(self):
         from zExceptions import Unauthorized
         b = self._makeBrain(2)
@@ -185,25 +163,7 @@
         self.assertRaises((NotFound, AttributeError, KeyError), b.getObject)
 
 
-class TestBrainsOldBehavior(BrainsTestBase, unittest.TestCase):
-
-    def _flag_value(self):
-        return False
-
-    def testGetObjectReturnsNoneForUnauthorized(self):
-        b = self._makeBrain(2)
-        self.assertEqual(b.getPath(), '/secret')
-        self.assertEqual(b.getObject(), None)
-
-    def testGetObjectReturnsNoneForMissing(self):
-        b = self._makeBrain(3)
-        self.assertEqual(b.getPath(), '/zonked')
-        self.assertRaises(KeyError, self.cat.getobject, 3)
-        self.assertEqual(b.getObject(), None)
-
-
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(TestBrains))
-    suite.addTest(unittest.makeSuite(TestBrainsOldBehavior))
     return suite

Modified: Zope/trunk/src/Products/ZCatalog/tests/test_catalog.py
===================================================================
--- Zope/trunk/src/Products/ZCatalog/tests/test_catalog.py	2010-08-01 09:35:51 UTC (rev 115300)
+++ Zope/trunk/src/Products/ZCatalog/tests/test_catalog.py	2010-08-01 09:44:24 UTC (rev 115301)
@@ -709,8 +709,6 @@
 class TestZCatalogGetObject(unittest.TestCase):
     # Test what objects are returned by brain.getObject()
 
-    _old_flag = None
-
     def setUp(self):
         from Products.ZCatalog.ZCatalog import ZCatalog
         catalog = ZCatalog('catalog')
@@ -722,18 +720,7 @@
 
     def tearDown(self):
         noSecurityManager()
-        if self._old_flag is not None:
-            self._restore_getObject_flag()
 
-    def _init_getObject_flag(self, flag):
-        from Products.ZCatalog import CatalogBrains
-        self._old_flag = CatalogBrains.GETOBJECT_RAISES
-        CatalogBrains.GETOBJECT_RAISES = flag
-
-    def _restore_getObject_flag(self):
-        from Products.ZCatalog import CatalogBrains
-        CatalogBrains.GETOBJECT_RAISES = self._old_flag
-
     def test_getObject_found(self):
         # Check normal traversal
         root = self.root
@@ -747,7 +734,6 @@
     def test_getObject_missing_raises_NotFound(self):
         # Check that if the object is missing we raise
         from zExceptions import NotFound
-        self._init_getObject_flag(True)
         root = self.root
         catalog = root.catalog
         root.ob = Folder('ob')
@@ -760,7 +746,6 @@
     def test_getObject_restricted_raises_Unauthorized(self):
         # Check that if the object's security does not allow traversal,
         # None is returned
-        self._init_getObject_flag(True)
         root = self.root
         catalog = root.catalog
         root.fold = Folder('fold')
@@ -782,42 +767,6 @@
         self.failIf(ob is None)
         self.assertEqual(ob.getId(), 'ob')
 
-    def test_getObject_missing_returns_None(self):
-        # Check that if the object is missing None is returned
-        self._init_getObject_flag(False)
-        root = self.root
-        catalog = root.catalog
-        root.ob = Folder('ob')
-        catalog.catalog_object(root.ob)
-        brain = catalog.searchResults({'id': 'ob'})[0]
-        del root.ob
-        self.assertEqual(brain.getObject(), None)
-
-    def test_getObject_restricted_returns_None(self):
-        # Check that if the object's security does not allow traversal,
-        # None is returned
-        self._init_getObject_flag(False)
-        root = self.root
-        catalog = root.catalog
-        root.fold = Folder('fold')
-        root.fold.ob = Folder('ob')
-        catalog.catalog_object(root.fold.ob)
-        brain = catalog.searchResults({'id': 'ob'})[0]
-        # allow all accesses
-        pickySecurityManager = PickySecurityManager()
-        setSecurityManager(pickySecurityManager)
-        self.assertEqual(brain.getObject().getId(), 'ob')
-        # disallow just 'ob' access
-        pickySecurityManager = PickySecurityManager(['ob'])
-        setSecurityManager(pickySecurityManager)
-        self.assertEqual(brain.getObject(), None)
-        # disallow just 'fold' access
-        pickySecurityManager = PickySecurityManager(['fold'])
-        setSecurityManager(pickySecurityManager)
-        ob = brain.getObject()
-        self.failIf(ob is None)
-        self.assertEqual(ob.getId(), 'ob')
-
     # Now test _unrestrictedGetObject
 
     def test_unrestrictedGetObject_found(self):
@@ -855,7 +804,6 @@
     def test_unrestrictedGetObject_missing_raises_NotFound(self):
         # Check that if the object is missing we raise
         from zExceptions import NotFound
-        self._init_getObject_flag(True)
         root = self.root
         catalog = root.catalog
         root.ob = Folder('ob')
@@ -865,18 +813,7 @@
         self.assertRaises((NotFound, AttributeError, KeyError),
                           brain._unrestrictedGetObject)
 
-    def test_unrestrictedGetObject_missing_returns_None(self):
-        # Check that if the object is missing None is returned
-        self._init_getObject_flag(False)
-        root = self.root
-        catalog = root.catalog
-        root.ob = Folder('ob')
-        catalog.catalog_object(root.ob)
-        brain = catalog.searchResults({'id': 'ob'})[0]
-        del root.ob
-        self.assertEqual(brain._unrestrictedGetObject(), None)
 
-
 def test_suite():
     suite = unittest.TestSuite()
     suite.addTest(unittest.makeSuite(TestAddDelColumn))

Modified: Zope/trunk/src/Zope2/Startup/handlers.py
===================================================================
--- Zope/trunk/src/Zope2/Startup/handlers.py	2010-08-01 09:35:51 UTC (rev 115300)
+++ Zope/trunk/src/Zope2/Startup/handlers.py	2010-08-01 09:44:24 UTC (rev 115301)
@@ -1,7 +1,5 @@
 import os
 import sys
-import time
-import logging
 from re import compile
 from socket import gethostbyaddr
 
@@ -23,7 +21,7 @@
 def debug_mode(value):
     value and _setenv('Z_DEBUG_MODE', '1')
     import Globals # to set value
-    Globals.DevelopmentMode = boolean(value)
+    Globals.DevelopmentMode = bool(value)
     return value
 
 def locale(value):
@@ -118,20 +116,6 @@
     import webdav
     webdav.enable_ms_public_header = value
 
-def catalog_getObject_raises(value):
-
-    if value is not None:
-
-        import warnings
-        warnings.warn(
-        "'catalog-getObject-raises' option will be removed in Zope 2.10:\n",
-        DeprecationWarning)
-
-        from Products.ZCatalog import CatalogBrains
-        CatalogBrains.GETOBJECT_RAISES = bool(value)
-
-    return value
-
 # server handlers
 
 def root_handler(config):

Modified: Zope/trunk/src/Zope2/Startup/zopeschema.xml
===================================================================
--- Zope/trunk/src/Zope2/Startup/zopeschema.xml	2010-08-01 09:35:51 UTC (rev 115300)
+++ Zope/trunk/src/Zope2/Startup/zopeschema.xml	2010-08-01 09:44:24 UTC (rev 115301)
@@ -855,17 +855,6 @@
      </description>
   </key>
 
-  <key name="catalog-getObject-raises" datatype="boolean"
-       handler="catalog_getObject_raises">
-     <description>
-     If this directive is set to "on" (the default), ZCatalog brains objects
-     will raise NotFound exceptions from 'getObject' for unreachable objects,
-     and Unauthorized for disallowed objects.  If the option is "off", they
-     will return None in such cases (which was the old behavior)
-     </description>
-     <metadefault>on</metadefault>
-  </key>
-
   <multisection type="ZServer.server" name="*" attribute="servers"/>
 
   <key name="port-base" datatype="integer" default="0">



More information about the Zope-Checkins mailing list