forked from 0x2620/pandora
add & operator to find many ids
This commit is contained in:
parent
4ec7e1b6c1
commit
3465d3ee9f
4 changed files with 22 additions and 15 deletions
|
@ -70,7 +70,11 @@ def buildCondition(k, op, v, user, exclude=False, owner=None):
|
|||
key_type = get_key_type(k)
|
||||
facet_keys = models.Document.facet_keys
|
||||
if k == 'id':
|
||||
v = ox.fromAZ(v)
|
||||
if op == '&' and isinstance(v, list):
|
||||
v = [ox.fromAZ(id_) for id_ in v]
|
||||
k += get_operator(op)
|
||||
else:
|
||||
v = ox.fromAZ(v)
|
||||
q = Q(**{k: v})
|
||||
if exclude:
|
||||
q = ~Q(id__in=models.Document.objects.filter(q))
|
||||
|
|
|
@ -10,6 +10,7 @@ def get_operator(op, type='str'):
|
|||
'<=': '__lte',
|
||||
'^': '__startswith',
|
||||
'$': '__endswith',
|
||||
'&': '__in',
|
||||
},
|
||||
'istr': {
|
||||
'==': '__iexact',
|
||||
|
@ -20,6 +21,7 @@ def get_operator(op, type='str'):
|
|||
'<=': '__lte',
|
||||
'^': '__istartswith',
|
||||
'$': '__iendswith',
|
||||
'&': '__in',
|
||||
},
|
||||
'int': {
|
||||
'==': '',
|
||||
|
@ -27,6 +29,7 @@ def get_operator(op, type='str'):
|
|||
'>=': '__gte',
|
||||
'<': '__lt',
|
||||
'<=': '__lte',
|
||||
'&': '__in',
|
||||
}
|
||||
}[type].get(op, {
|
||||
'str': '__contains',
|
||||
|
|
|
@ -78,14 +78,14 @@ pandora.ui.editDialog = function() {
|
|||
pandora.api.find({
|
||||
keys: keys,
|
||||
query: {
|
||||
conditions: ids.map(function(id) {
|
||||
return {
|
||||
conditions: [
|
||||
{
|
||||
key: 'id',
|
||||
operator: '==',
|
||||
value: id
|
||||
};
|
||||
}),
|
||||
operator: '|'
|
||||
operator: '&',
|
||||
value: ids
|
||||
}
|
||||
],
|
||||
operator: '&'
|
||||
}
|
||||
}, function(result) {
|
||||
var data = {},
|
||||
|
|
|
@ -77,14 +77,14 @@ pandora.ui.editDocumentsDialog = function() {
|
|||
pandora.api.findDocuments({
|
||||
keys: keys,
|
||||
query: {
|
||||
conditions: ids.map(function(id) {
|
||||
return {
|
||||
conditions: [
|
||||
{
|
||||
key: 'id',
|
||||
operator: '==',
|
||||
value: id
|
||||
};
|
||||
}),
|
||||
operator: '|'
|
||||
operator: '&',
|
||||
value: ids
|
||||
}
|
||||
],
|
||||
operator: '&'
|
||||
}
|
||||
}, function(result) {
|
||||
var data = {},
|
||||
|
|
Loading…
Reference in a new issue