[Checkins] SVN: Products.BTreeFolder2/trunk/ __getattr__, _getOb optimizations
Nikolay Kim
fafhrd91 at gmail.com
Thu Jul 21 12:28:52 EDT 2011
Log message for revision 122311:
__getattr__, _getOb optimizations
Changed:
U Products.BTreeFolder2/trunk/CHANGES.txt
U Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py
-=-
Modified: Products.BTreeFolder2/trunk/CHANGES.txt
===================================================================
--- Products.BTreeFolder2/trunk/CHANGES.txt 2011-07-21 07:27:54 UTC (rev 122310)
+++ Products.BTreeFolder2/trunk/CHANGES.txt 2011-07-21 16:28:51 UTC (rev 122311)
@@ -6,7 +6,9 @@
- Add some tests for correct `getattr` behavior.
+- __getattr__, _getOb optimizations
+
2.13.3 (2011-03-15)
-------------------
Modified: Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py
===================================================================
--- Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py 2011-07-21 07:27:54 UTC (rev 122310)
+++ Products.BTreeFolder2/trunk/src/Products/BTreeFolder2/BTreeFolder2.py 2011-07-21 16:28:51 UTC (rev 122311)
@@ -208,16 +208,13 @@
def _getOb(self, id, default=_marker):
"""Return the named object from the folder.
"""
- tree = self._tree
- if default is _marker:
- ob = tree[id]
- return ob.__of__(self)
- else:
- ob = tree.get(id, _marker)
- if ob is _marker:
- return default
+ try:
+ return self._tree[id].__of__(self)
+ except KeyError:
+ if default is _marker:
+ raise
else:
- return ob.__of__(self)
+ return default
security.declareProtected(access_contents_information, 'get')
def get(self, name, default=None):
@@ -231,10 +228,10 @@
# to subitems, and __bobo_traverse__ hooks don't work with
# restrictedTraverse() unless __getattr__() is also present.
# Oh well.
- res = self._tree.get(name)
- if res is None:
+ try:
+ return self._tree[name]
+ except KeyError:
raise AttributeError(name)
- return res
def _setOb(self, id, object):
"""Store the named object in the folder.
More information about the checkins
mailing list