Implements "not" operator for complex query

Change-Id: Idf17b35c5f4267b9254a64e37b0d8b1b0dcbca89
Implements: blueprint complex-filter-expressions-in-api-queries
This commit is contained in:
Balazs Gibizer
2014-01-03 16:26:50 +01:00
parent 861d83cad3
commit c5670978d9
7 changed files with 294 additions and 74 deletions

View File

@@ -27,6 +27,7 @@ from sqlalchemy import and_
from sqlalchemy import asc
from sqlalchemy import desc
from sqlalchemy import func
from sqlalchemy import not_
from sqlalchemy import or_
from sqlalchemy.orm import aliased
@@ -1207,7 +1208,8 @@ class QueryTransformer(object):
"in": lambda field_name, values: field_name.in_(values)}
complex_operators = {"or": or_,
"and": and_}
"and": and_,
"not": not_}
ordering_functions = {"asc": asc,
"desc": desc}
@@ -1218,6 +1220,8 @@ class QueryTransformer(object):
def _handle_complex_op(self, complex_op, nodes):
op = self.complex_operators[complex_op]
if op == not_:
nodes = [nodes]
element_list = []
for node in nodes:
element = self._transform(node)