[Erp5-report] r25060 - /erp5/trunk/products/ZSQLCatalog/SQLCatalog.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jan 8 17:01:26 CET 2009
Author: vincent
Date: Thu Jan 8 17:01:18 2009
New Revision: 25060
URL: http://svn.erp5.org?rev=25060&view=rev
Log:
When query_table is given a false value, do not expand related keys.
Also, since columns are not mapped to any table when query_table is set to a false value, this means that catalog passes column names through. The purppose of using catalog over rendering "by hand" the where-expression is that it will use search keys (keyword key, fulltext key, ...) to guess desired operator.
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=25060&r1=25059&r2=25060&view=diff
==============================================================================
--- erp5/trunk/products/ZSQLCatalog/SQLCatalog.py [utf8] (original)
+++ erp5/trunk/products/ZSQLCatalog/SQLCatalog.py [utf8] Thu Jan 8 17:01:18 2009
@@ -1924,38 +1924,40 @@
kw[key] = REQUEST[key]
def getNewKeyAndUpdateVariables(key):
- key_is_acceptable = key in acceptable_key_map # Only calculate once
- key_is_related = key in related_keys
new_key = None
- if key_is_acceptable or key_is_related:
- if key_is_related: # relation system has priority (ex. security_uid)
- # We must rename the key
- method_id = related_method[key]
- table_list = related_table_list[key]
- if not related_methods.has_key((table_list,method_id)):
- related_methods[(table_list,method_id)] = 1
- # Prepend renamed table name
- new_key = "%s.%s" % (related_table_map[(table_list,method_id)][-1][-1],
- related_column[key])
- elif key_is_acceptable:
- if key.find('.') < 0:
- # if the key is only used by one table, just append its name
- if len(acceptable_key_map[key]) == 1 :
- new_key = '%s.%s' % (acceptable_key_map[key][0], key)
- # query_table specifies what table name should be used by default
- elif query_table and \
- '%s.%s' % (query_table, key) in acceptable_key_map:
- new_key = '%s.%s' % (query_table, key)
- elif key == 'uid':
- # uid is always ambiguous so we can only change it here
- new_key = 'catalog.uid'
+ if query_table:
+ key_is_acceptable = key in acceptable_key_map # Only calculate once
+ key_is_related = key in related_keys
+ if key_is_acceptable or key_is_related:
+ if key_is_related: # relation system has priority (ex. security_uid)
+ # We must rename the key
+ method_id = related_method[key]
+ table_list = related_table_list[key]
+ if not related_methods.has_key((table_list,method_id)):
+ related_methods[(table_list,method_id)] = 1
+ # Prepend renamed table name
+ new_key = "%s.%s" % (related_table_map[(table_list,method_id)][-1][-1],
+ related_column[key])
+ elif key_is_acceptable:
+ if key.find('.') < 0:
+ # if the key is only used by one table, just append its name
+ if len(acceptable_key_map[key]) == 1 :
+ new_key = '%s.%s' % (acceptable_key_map[key][0], key)
+ # query_table specifies what table name should be used by default
+ elif '%s.%s' % (query_table, key) in acceptable_key_map:
+ new_key = '%s.%s' % (query_table, key)
+ elif key == 'uid':
+ # uid is always ambiguous so we can only change it here
+ new_key = 'catalog.uid'
+ else:
+ LOG('SQLCatalog', WARNING, 'buildSQLQuery this key is too ambiguous : %s' % key)
else:
- LOG('SQLCatalog', WARNING, 'buildSQLQuery this key is too ambiguous : %s' % key)
- else:
- new_key = key
- if new_key is not None:
- # Add table to table dict, we use catalog by default
- from_table_dict[acceptable_key_map[new_key][0]] = acceptable_key_map[new_key][0]
+ new_key = key
+ if new_key is not None:
+ # Add table to table dict, we use catalog by default
+ from_table_dict[acceptable_key_map[new_key][0]] = acceptable_key_map[new_key][0]
+ else:
+ new_key = key
key_alias_dict[key] = new_key
return new_key
More information about the Erp5-report
mailing list