comparison ZDBInterfaceFolder.py @ 13:cf03ab908a2b

add _ignore_empty option (default=true) to ZSQLInlineSearch.
author casties
date Thu, 07 Jul 2011 21:04:23 +0200
parents 09882d5a3989
children 9cea47dc6926
comparison
equal deleted inserted replaced
12:09882d5a3989 13:cf03ab908a2b
35 # set db connection to autocommit 35 # set db connection to autocommit
36 self.autocommit = autocommit 36 self.autocommit = autocommit
37 # default text search mode 37 # default text search mode
38 self.default_search = default_search 38 self.default_search = default_search
39 39
40 def getSQLQuery(self, table, argv): 40 def getSQLQuery(self, table, argv, ignore_empty=False):
41 """returns dict with SQL query string and args""" 41 """returns dict with SQL query string and args.
42 logging.debug("getSQLquery table=%s argv=%s"%(table,argv)) 42 ignore_empty: remove fields with empty string values from query."""
43 logging.debug("getSQLquery table=%s argv=%s ignore_empty=%s"%(table,argv,ignore_empty))
43 args = [] 44 args = []
44 select = "*" 45 select = "*"
45 order = None 46 order = None
46 wheres = [] 47 wheres = []
47 whereOp = "AND" 48 whereOp = "AND"
48 processed = {} 49 processed = {}
49 unprocessed = {} 50 unprocessed = {}
51 ignored = {}
50 limit = None 52 limit = None
51 offset = None 53 offset = None
52 54
53 def doOp(op, param, val): 55 def doOp(op, param, val):
54 # handles comparison operations in WHERE clause 56 # handles comparison operations in WHERE clause
55 logging.debug("doop op=%s param=%s val=%s"%(op,param,val)) 57 logging.debug("doop op=%s param=%s val=%s"%(op,param,val))
58 if ignore_empty and not val:
59 # ignore parameter
60 logging.debug(" param=%s ignored"%(param))
61 return
62
56 if isinstance(val, list): 63 if isinstance(val, list):
57 # join multiple parameters with spaces (makes sense with checkbox and -op=all) 64 # join multiple parameters with spaces (makes sense with checkbox and -op=all)
58 val = " ".join(val) 65 val = " ".join(val)
59 66
60 # string comparisons are case-insensitive 67 # string comparisons are case-insensitive
120 whereOp = sqlName(val) 127 whereOp = sqlName(val)
121 elif key == "_max" or key == "_size": 128 elif key == "_max" or key == "_size":
122 # number of results 129 # number of results
123 limit = sqlName(val) 130 limit = sqlName(val)
124 elif key == "_skip" or key == "_start": 131 elif key == "_skip" or key == "_start":
125 logging.debug("SKIP!")
126 # start at result number 132 # start at result number
127 offset = sqlName(val) 133 offset = sqlName(val)
128 elif key[:3] == "_op": 134 elif key[:3] == "_op":
129 # operation parameters _op_param=val 135 # operation parameters _op_param=val
130 param = sqlName(key[4:]) 136 param = sqlName(key[4:])
160 if offset: 166 if offset:
161 query += " OFFSET " + offset 167 query += " OFFSET " + offset
162 168
163 return {'query' : query, 'args' : args} 169 return {'query' : query, 'args' : args}
164 170
165 def ZDBInlineSearch(self, _table=None, **argv): 171 def ZDBInlineSearch(self, _table=None, _ignore_empty=True, **argv):
166 """returns result set from search with given parameters""" 172 """returns result set from search with given parameters"""
167 query = self.getSQLQuery(_table, argv) 173 query = self.getSQLQuery(_table, argv, ignore_empty= _ignore_empty)
168 result = self.executeZSQL(query['query'], query['args']) 174 result = self.executeZSQL(query['query'], query['args'])
169 return result 175 return result
170 176
171 def manage_editZDBInterfaceFolder(self, title=None, connection_id=None, autocommit=None, default_search=None, 177 def manage_editZDBInterfaceFolder(self, title=None, connection_id=None, autocommit=None, default_search=None,
172 REQUEST=None): 178 REQUEST=None):