[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