[filter2] Possibilité d'utiliser des < ou > dans les filtres humains
This commit is contained in:
parent
72e35bcb32
commit
b522b7aa69
1 changed files with 7 additions and 3 deletions
10
filter2.py
10
filter2.py
|
@ -21,7 +21,7 @@ def prioritize(l):
|
||||||
if not isinstance(l, list):
|
if not isinstance(l, list):
|
||||||
return l
|
return l
|
||||||
l=simplify(l)
|
l=simplify(l)
|
||||||
for c in ['!=', '=', '&', '|']:
|
for c in ['!=', '<', '>', '=', '&', '|']:
|
||||||
i=0
|
i=0
|
||||||
while i<len(l):
|
while i<len(l):
|
||||||
if l[i] == c:
|
if l[i] == c:
|
||||||
|
@ -51,6 +51,10 @@ def toldapfilter(l):
|
||||||
op=l[0]
|
op=l[0]
|
||||||
if op == "=":
|
if op == "=":
|
||||||
return "%s=%s" % (l[1], l[2])
|
return "%s=%s" % (l[1], l[2])
|
||||||
|
elif op == "<":
|
||||||
|
return "!(%s>=%s)" % (l[1], l[2])
|
||||||
|
elif op == ">":
|
||||||
|
return "!(%s<=%s)" % (l[1], l[2])
|
||||||
elif op == "!=":
|
elif op == "!=":
|
||||||
return "!(%s=%s)" % (l[1], l[2])
|
return "!(%s=%s)" % (l[1], l[2])
|
||||||
return op + ''.join(['(%s)' % toldapfilter(i) for i in l[1:]])
|
return op + ''.join(['(%s)' % toldapfilter(i) for i in l[1:]])
|
||||||
|
@ -63,8 +67,8 @@ def pypexpr():
|
||||||
if not expr:
|
if not expr:
|
||||||
import pyparsing
|
import pyparsing
|
||||||
unicodePrintables = u''.join(unichr(c) for c in xrange(65536) if not unichr(c).isspace())
|
unicodePrintables = u''.join(unichr(c) for c in xrange(65536) if not unichr(c).isspace())
|
||||||
txt = "".join(c for c in unicodePrintables if c not in '()&|!=')
|
txt = "".join(c for c in unicodePrintables if c not in '()&|<>!=')
|
||||||
expr = pyparsing.nestedExpr("(", ")", pyparsing.Word(txt) | pyparsing.oneOf("& | != ="))
|
expr = pyparsing.nestedExpr("(", ")", pyparsing.Word(txt) | pyparsing.oneOf("& | < > != ="))
|
||||||
return expr
|
return expr
|
||||||
|
|
||||||
def human_to_list(data):
|
def human_to_list(data):
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue