[Erp5-report] r31884 seb - in /erp5/trunk/products: ERP5Catalog/tests/ ZSQLCatalog/ ZSQLCat...
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jan 21 16:30:21 CET 2010
Author: seb
Date: Thu Jan 21 16:30:20 2010
New Revision: 31884
URL: http://svn.erp5.org?rev=31884&view=rev
Log:
* define getProperty on zsqlbrain in order to get values
either on the brain or on the real object
* update unit test for getProperty
* add new method hasColumn in catalog API
* add test for hasColumn
Modified:
erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
erp5/trunk/products/ZSQLCatalog/Extensions/zsqlbrain.py
erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py
erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py
erp5/trunk/products/ZSQLCatalog/tests/testSQLCatalog.py
Modified: erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py?rev=31884&r1=31883&r2=31884&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py [utf8] (original)
+++ erp5/trunk/products/ERP5Catalog/tests/testERP5Catalog.py [utf8] Thu Jan 21 16:30:20 2010
@@ -3932,17 +3932,28 @@
# Make sure that we are able to retrieve data directly from mysql
# without retrieving real objects
title="foo"
- person = person_module.newContent(portal_type='Person',title=title)
+ description = "foobar"
+ person = person_module.newContent(portal_type='Person',title=title,
+ description=description)
person_uid = person.getUid()
person.immediateReindexObject()
folder_object_list = person_module.searchFolder(uid=person_uid, select_dict={'title': None})
new_title = 'bar'
+ new_description = 'foobarfoo'
person.setTitle(new_title)
+ person.setDescription(new_description)
self.assertEquals(new_title, person.getTitle())
expected_sql_title_list = [title]
- self.assertEquals([x.title for x in folder_object_list], expected_sql_title_list)
+ self.assertEquals([x.title for x in folder_object_list],
+ expected_sql_title_list)
+ self.assertEquals([x.getProperty('title') for x in
+ folder_object_list], expected_sql_title_list)
+ expected_sql_description_list = [new_description]
+ self.assertEquals([x.getProperty('description') for x in
+ folder_object_list], expected_sql_description_list)
real_title_list = [new_title]
- self.assertEquals([x.getTitle() for x in folder_object_list], real_title_list)
+ self.assertEquals([x.getTitle() for x in
+ folder_object_list], real_title_list)
def test_suite():
suite = unittest.TestSuite()
Modified: erp5/trunk/products/ZSQLCatalog/Extensions/zsqlbrain.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/Extensions/zsqlbrain.py?rev=31884&r1=31883&r2=31884&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/Extensions/zsqlbrain.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/Extensions/zsqlbrain.py [utf8] Thu Jan 21 16:30:20 2010
@@ -21,6 +21,8 @@
from AccessControl.SecurityInfo import allow_class
from zLOG import LOG
+
+_MARKER = []
class ZSQLBrain(Acquisition.Implicit):
security = ClassSecurityInfo()
@@ -69,6 +71,19 @@
error=sys.exc_info() )
return None
+ def getProperty(self, name, d=_MARKER, **kw):
+ value = None
+ if hasattr(self, name):
+ value = getattr(self, name)
+ else:
+ if d is not _MARKER:
+ kw['d'] = d
+ document = self.getObject()
+ if document is None:
+ raise AttributeError(name)
+ value = document.getProperty(name, **kw)
+ return value
+
def absolute_url(self, relative=0):
"""
Default method used to return the path stored in the Catalog.
Modified: erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/SQLCatalog.py?rev=31884&r1=31883&r2=31884&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/SQLCatalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/SQLCatalog.py [utf8] Thu Jan 21 16:30:20 2010
@@ -1867,6 +1867,9 @@
# It's a related key
search_key = self.getSearchKey(key, 'RelatedKey')
return search_key, related_key_definition
+
+ def hasColumn(self, column):
+ return self.getColumnSearchKey(column)[0] is not None
@profiler_decorator
def getColumnDefaultSearchKey(self, key):
Modified: erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py?rev=31884&r1=31883&r2=31884&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/ZSQLCatalog.py [utf8] Thu Jan 21 16:30:20 2010
@@ -992,6 +992,12 @@
return catalog.getColumnIds()
return []
+ def hasColumn(self, column, sql_catalog_id=None):
+ catalog = self.getSQLCatalog(sql_catalog_id)
+ if catalog is not None:
+ return catalog.hasColumn(column)
+ return False
+
def getAttributesForColumn(self, column, sql_catalog_id=None):
"""
Return the attribute names as a single string
Modified: erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py?rev=31884&r1=31883&r2=31884&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/interfaces/query_catalog.py [utf8] Thu Jan 21 16:30:20 2010
@@ -174,6 +174,12 @@
There is one comparison operator instance per possible string value.
"""
+ def hasColumn(column):
+ """
+ Check if the given column or virtual column (in case
+ of related keys) exists or not
+ """
+
# TODO: add support for other operators (logical, ensemblist (?))
def searchResults(REQUEST=None, **kw):
Modified: erp5/trunk/products/ZSQLCatalog/tests/testSQLCatalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/tests/testSQLCatalog.py?rev=31884&r1=31883&r2=31884&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/tests/testSQLCatalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/tests/testSQLCatalog.py [utf8] Thu Jan 21 16:30:20 2010
@@ -534,6 +534,10 @@
self.assertTrue('ambiguous_mapping' in select_dict, select_dict)
self.assertTrue('bar' in select_dict['ambiguous_mapping'], select_dict['ambiguous_mapping'])
+ def test_hasColumn(self):
+ self.assertTrue(self._catalog.hasColumn('uid'))
+ self.assertFalse(self._catalog.hasColumn('foobar'))
+
##return catalog(title=Query(title='a', operator='not'))
#return catalog(title={'query': 'a', 'operator': 'not'})
#return catalog(title={'query': ['a', 'b'], 'operator': 'not'})
More information about the Erp5-report
mailing list