Mercurial > hg > ZDBInterface
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): |