add new operator &: {key: 'id', operator: '&', value: ['a', 'b']
This commit is contained in:
parent
c0ce0a556a
commit
5073fc1c52
2 changed files with 15 additions and 10 deletions
|
|
@ -23,6 +23,7 @@ def get_operator(op, type='str'):
|
|||
'<=': operators.le,
|
||||
'^': operators.startswith_op,
|
||||
'$': operators.endswith_op,
|
||||
'&': operators.in_op,
|
||||
},
|
||||
'int': {
|
||||
'==': operators.eq,
|
||||
|
|
@ -113,11 +114,17 @@ class Parser(object):
|
|||
in_op = operators.notin_op if exclude else operators.in_op
|
||||
q = in_op(self._model.id, ids)
|
||||
return q
|
||||
elif k == 'id':
|
||||
if op == '&':
|
||||
ids = v
|
||||
else:
|
||||
ids = [v]
|
||||
in_op = operators.notin_op if exclude else operators.in_op
|
||||
q = in_op(self._model.id, ids)
|
||||
return q
|
||||
elif key_type in ("string", "text"):
|
||||
if isinstance(v, str):
|
||||
v = unicodedata.normalize('NFKD', v).lower()
|
||||
else:
|
||||
v = v.lower()
|
||||
q = get_operator(op)(self._find.findvalue, v)
|
||||
if k != '*':
|
||||
q &= (self._find.key == k)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue