diff --git a/VERSION b/VERSION index eb595278..857a327b 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.1.0 (2012-10-12 18:16:59) dev +Version 2.1.0 (2012-10-12 22:16:19) dev diff --git a/gluon/dal.py b/gluon/dal.py index 3e56b1d7..27f428f6 100644 --- a/gluon/dal.py +++ b/gluon/dal.py @@ -6565,6 +6565,10 @@ def smart_query(fields,text): elif op == 'startswith': new_query = field.startswith(value) elif op == 'endswith': new_query = field.endswith(value) else: raise RuntimeError, "Invalid operation" + elif field._db._adapter.dbengine=='google:datastore' and \ + field.type in ('list:integer', 'list:string', 'list:reference'): + if op == 'contains': new_query = field.contains(value) + else: raise RuntimeError, "Invalid operation" else: raise RuntimeError, "Invalid operation" if neg: new_query = ~new_query if query is None: diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 088dc0e4..7b46fa3e 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -1528,15 +1528,20 @@ class SQLFORM(FORM): 'datetime':['=','!=','<','>','<=','>='], 'integer':['=','!=','<','>','<=','>='], 'double':['=','!=','<','>','<=','>='], + 'id':['=','!=','<','>','<=','>='], + 'reference':['=','!=','<','>','<=','>='], 'boolean':['=','!=']} if fields[0]._db._adapter.dbengine=='google:datastore': search_options['string'] = ['=','!=','<','>','<=','>='] search_options['text'] = ['=','!=','<','>','<=','>='] + search_options['list:string'] = ['contains'] + search_options['list:integer'] = ['contains'] + search_options['list:reference'] = ['contains'] criteria = [] selectfields = [] for field in fields: name = str(field).replace('.','-') - options = search_options.get(field.type,None) + options = search_options.get(field.type.split(' ')[0],None) if options: label = isinstance(field.label,str) and T(field.label) or field.label selectfields.append(OPTION(label, _value=str(field)))