[Erp5-report] r20221 - in /erp5/trunk/products/ERP5Type: Base.py tests/testERP5Type.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Mon Mar 31 12:14:04 CEST 2008
Author: jerome
Date: Mon Mar 31 12:14:03 2008
New Revision: 20221
URL: http://svn.erp5.org?rev=20221&view=rev
Log:
r20200 changed behaviour of relation to non existant objects. Restore the
previous behaviour with a test to clarify the behaviour.
Modified:
erp5/trunk/products/ERP5Type/Base.py
erp5/trunk/products/ERP5Type/tests/testERP5Type.py
Modified: erp5/trunk/products/ERP5Type/Base.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/Base.py?rev=20221&r1=20220&r2=20221&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/Base.py (original)
+++ erp5/trunk/products/ERP5Type/Base.py Mon Mar 31 12:14:03 2008
@@ -2007,7 +2007,9 @@
ref_list = []
for path in self._getAcquiredCategoryMembershipList(id, base=1,
spec=spec, filter=filter, **kw):
- ref_list.append(self._getCategoryTool().resolveCategory(path))
+ category = self._getCategoryTool().resolveCategory(path)
+ if category is not None:
+ ref_list.append(category)
return ref_list
security.declareProtected(Permissions.AccessContentsInformation,
Modified: erp5/trunk/products/ERP5Type/tests/testERP5Type.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/tests/testERP5Type.py?rev=20221&r1=20220&r2=20221&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/tests/testERP5Type.py (original)
+++ erp5/trunk/products/ERP5Type/tests/testERP5Type.py Mon Mar 31 12:14:03 2008
@@ -28,6 +28,7 @@
import md5
import unittest
+import sys
from random import randint
from Testing import ZopeTestCase
@@ -1823,6 +1824,46 @@
self.assertRaises(Unauthorized, foo.getRegionValue)
self.assertRaises(Unauthorized, foo.getRegionTitle)
+
+ def test_category_accessor_to_non_existing_documents(self):
+ # tests behaviour of category accessors with relations to non existing
+ # documents.
+ region_category = self.getPortal().portal_categories.region
+ beta_id = "beta"
+ beta_title = "Beta System"
+ beta = region_category.newContent(
+ portal_type = "Category",
+ id = beta_id,
+ title = beta_title, )
+ beta_path = beta.getCategoryRelativeUrl()
+
+ # gamma does not exist
+
+ # Make sure categories are reindexed
+ get_transaction().commit()
+ self.tic()
+
+ # Create a new person, and associate it to beta and gamma.
+ module = self.getPersonModule()
+ foo = module.newContent(portal_type='Person', title='Foo')
+ foo.setRegionList(('beta', 'gamma'))
+
+ self.assertEquals([beta_path, 'gamma'],
+ foo.getRegionList())
+ # using relations to non existant objects will issue a warning in
+ # event.log
+ self._catch_log_errors(ignored_level=sys.maxint)
+ self.assertEquals([beta],
+ foo.getRegionValueList())
+ self.assertEquals([beta_title],
+ foo.getRegionTitleList())
+ self._ignore_log_errors()
+ logged_errors = [ logrecord for logrecord in self.logged
+ if logrecord[0] == 'CMFCategory' ]
+ self.assertEquals('Could not access object region/gamma',
+ logged_errors[0][2])
+
+
def test_list_accessors(self):
self._addProperty('Person', '''{'id': 'dummy',
'type': 'lines',
More information about the Erp5-report
mailing list