diff --git a/VERSION b/VERSION index dcf9788c..3374f8b2 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.9.12-beta+timestamp.2015.01.15.09.47.52 +Version 2.9.12-beta+timestamp.2015.01.15.09.58.09 diff --git a/gluon/sqlhtml.py b/gluon/sqlhtml.py index 28c37615..6e32aa22 100644 --- a/gluon/sqlhtml.py +++ b/gluon/sqlhtml.py @@ -2326,7 +2326,7 @@ class SQLFORM(FORM): expcolumns.append(str(field)) if export_type in exportManager and exportManager[export_type]: - if keywords: + if keywords and not callable(searchable): try: #the query should be constructed using searchable #fields but not virtual fields @@ -2339,6 +2339,19 @@ class SQLFORM(FORM): except Exception, e: response.flash = T('Internal Error') rows = [] + elif callable(searchable): + #use custom_query using searchable + try: + #the query should be constructed using searchable + #fields but not virtual fields + sfields = reduce(lambda a, b: a + b, + [[f for f in t if f.readable and not isinstance(f, Field.Virtual)] for t in tables]) + dbset = dbset(searchable(sfields, keywords)) + rows = dbset.select(left=left, orderby=orderby, + cacheable=True, *selectable_columns) + except Exception, e: + response.flash = T('Internal Error') + rows = [] else: rows = dbset.select(left=left, orderby=orderby, cacheable=True, *selectable_columns)