[Erp5-report] r15457 - /erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Aug 3 15:08:38 CEST 2007
Author: vincent
Date: Fri Aug 3 15:08:38 2007
New Revision: 15457
URL: http://svn.erp5.org?rev=15457&view=rev
Log:
Make Query and ComplexQuery hashable, so that they can be used as dictionnary key. It is valid as long as nobody use direct access to properties - there is no setter defined - and that extra care is taken not modify variants members which are provided at construction.
Modified:
erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
Modified: erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
URL: http://svn.erp5.org/erp5/trunk/products/ZSQLCatalog/SQLCatalog.py?rev=15457&r1=15456&r2=15457&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/SQLCatalog.py (original)
+++ erp5/trunk/products/ZSQLCatalog/SQLCatalog.py Fri Aug 3 15:08:38 2007
@@ -257,6 +257,13 @@
def __call__(self):
self.asSQLExpression()
+
+ def __hash__(self):
+ value = self.value
+ if isinstance(value, list):
+ value = tuple(value)
+ return hash((self.format, self.operator, self.range, self.search_mode,
+ self.table_alias_list, self.key, value, self.type))
def getRange(self):
return self.range
@@ -454,6 +461,10 @@
def __call__(self):
self.asSQLExpression()
+ def __hash__(self):
+ subquery_hash = hash(tuple([hash(x) for x in self.getQueryList()]))
+ return hash((subquery_hash, self.operator))
+
def getQueryList(self):
return self.query_list
More information about the Erp5-report
mailing list