always use get_operator, avoid case-insensitive match if possible
This commit is contained in:
parent
5b545e6e43
commit
e9863c238e
24 changed files with 289 additions and 370 deletions
|
|
@ -1,17 +1,22 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# vi:si:et:sw=4:sts=4:ts=4
|
||||
from django.db.models import Q, Manager
|
||||
from oxdjango.query import QuerySet
|
||||
from django.conf import settings
|
||||
|
||||
from oxdjango.managers import get_operator
|
||||
from oxdjango.query import QuerySet
|
||||
|
||||
keymap = {
|
||||
'email': 'user__email',
|
||||
'user': 'username',
|
||||
'group': 'user__groups__name',
|
||||
'groups': 'user__groups__name',
|
||||
}
|
||||
default_key = 'username'
|
||||
|
||||
def parseCondition(condition, user):
|
||||
k = condition.get('key', 'name')
|
||||
k = {
|
||||
'email': 'user__email',
|
||||
'user': 'username',
|
||||
'group': 'user__groups__name',
|
||||
'groups': 'user__groups__name',
|
||||
}.get(k, k)
|
||||
k = condition.get('key', default_key)
|
||||
k = keymap.get(k, k)
|
||||
v = condition['value']
|
||||
op = condition.get('operator')
|
||||
if not op:
|
||||
|
|
@ -28,18 +33,9 @@ def parseCondition(condition, user):
|
|||
v = levels.index(v) - 1
|
||||
else:
|
||||
v = 0
|
||||
key = '%s%s' % (k, {
|
||||
'==': '__exact',
|
||||
'<': '__lt',
|
||||
'>': '__gt',
|
||||
}.get(op,''))
|
||||
key = k + get_operator(op, 'int')
|
||||
else:
|
||||
key = '%s%s' % (k, {
|
||||
'==': '__iexact',
|
||||
'^': '__istartswith',
|
||||
'$': '__iendswith',
|
||||
}.get(op,'__icontains'))
|
||||
|
||||
key = k + get_operator(op, 'istr')
|
||||
key = str(key)
|
||||
|
||||
q = Q(**{key: v})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue