[Erp5-report] r17522 - in /erp5/trunk/products/ERP5Type: Tool/ tests/
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Nov 12 08:32:41 CET 2007
Author: jerome
Date: Mon Nov 12 08:32:41 2007
New Revision: 17522
URL: http://svn.erp5.org?rev=17522&view=rev
Log:
session instance should raise AttributeError / KeyError when accessing non
existant attribute / item
Modified:
erp5/trunk/products/ERP5Type/Tool/SessionTool.py
erp5/trunk/products/ERP5Type/tests/testSessionTool.py
Modified: erp5/trunk/products/ERP5Type/Tool/SessionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Tool/SessionTool.py?rev=17522&r1=17521&r2=17522&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Tool/SessionTool.py (original)
+++ erp5/trunk/products/ERP5Type/Tool/SessionTool.py Mon Nov 12 08:32:41 2007
@@ -57,14 +57,20 @@
""" Update current aquisition context. """
self._aq_context = aq_context
- def __getattr__(self, key):
- return self.__getitem__(key)
+ def __getattr__(self, key, default=_marker):
+ if key in self.data:
+ return self.__getitem__(key)
+ if default is not _marker:
+ return default
+ raise AttributeError, key
def __getitem__(self, key):
- value = self.data.get(key, None)
- if key is not None and hasattr(value, '__of__'):
- value = value.__of__(self._aq_context)
- return value
+ if key in self.data:
+ value = self.data[key]
+ if hasattr(value, '__of__'):
+ value = value.__of__(self._aq_context)
+ return value
+ raise KeyError, key
def __setitem__(self, key, item):
self.data[key] = aq_base(item)
Modified: erp5/trunk/products/ERP5Type/tests/testSessionTool.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testSessionTool.py?rev=17522&r1=17521&r2=17522&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testSessionTool.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testSessionTool.py Mon Nov 12 08:32:41 2007
@@ -145,7 +145,24 @@
portal_sessions.manage_delObjects(self.session_id)
session = portal_sessions[self.session_id]
self.assert_(0 == len(session.keys()))
-
+
+ def test_session_dict_interface(self):
+ session = self.portal.portal_sessions[self.session_id]
+ session['foo'] = 'Bar'
+ self.assertTrue('foo' in session)
+ self.assertEquals('Bar', session['foo'])
+ self.assertEquals('Bar', session.get('foo'))
+ self.assertFalse('bar' in session)
+ self.assertEquals('Default', session.get('bar', 'Default'))
+ self.assertRaises(KeyError, session.__getitem__, 'bar')
+
+ def test_session_getattr(self):
+ session = self.portal.portal_sessions[self.session_id]
+ session['foo'] = 'Bar'
+ self.assertEquals('Bar', session.foo)
+ self.assertEquals('Default', getattr(session, 'bar', 'Default'))
+ self.assertRaises(AttributeError, getattr, session, 'bar')
+
def test_suite():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(TestSessionTool))
More information about the Erp5-report
mailing list