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)
|
||||
|
|
|
@ -29,14 +29,12 @@ oml.ui.statusbar = function() {
|
|||
if (ui.listSelection.length) {
|
||||
oml.api.find({
|
||||
query: {
|
||||
conditions: ui.listSelection.map(function(id) {
|
||||
return {
|
||||
conditions: [{
|
||||
key: 'id',
|
||||
operator: '==',
|
||||
value: id
|
||||
};
|
||||
}),
|
||||
operator: '|'
|
||||
operator: '&',
|
||||
value: ui.listSelection
|
||||
}],
|
||||
operator: '&'
|
||||
}
|
||||
}, function(result) {
|
||||
that.set('selected', result.data);
|
||||
|
|
Loading…
Reference in a new issue