- value = str(api.db.quote(value))
-
- clause = "%s %s %s" % (field, operator, value)
+ field=""
+ operator=""
+ value = "FALSE"
+ clause = "%s %s %s" % (field, operator, value)
+ else:
+ vals = {}
+ for val in value:
+ base_op, val = get_op_and_val(val)
+ if base_op in vals:
+ vals[base_op].append(val)
+ else:
+ vals[base_op] = [val]
+ subclauses = []
+ for operator in vals.keys():
+ if operator == '=':
+ if modifiers['&']:
+ subclauses.append("(%s @> ARRAY[%s])" % (field, ",".join(vals[operator])))
+ elif modifiers['|']:
+ subclauses.append("(%s && ARRAY[%s])" % (field, ",".join(vals[operator])))
+ else:
+ subclauses.append("(%s IN (%s))" % (field, ",".join(vals[operator])))
+ elif operator == 'IS':
+ subclauses.append("(%s IS NULL)" % field)
+ else:
+ for value in vals[operator]:
+ subclauses.append("(%s %s %s)" % (field, operator, value))
+ clause = "(" + " OR ".join(subclauses) + ")"
+ else:
+ operator, value = get_op_and_val(value)
+
+ clause = "%s %s %s" % (field, operator, value)