Mercurial > p > roundup > code
diff roundup/backends/back_anydbm.py @ 6396:75a53956cf13
Multilink expressions with simple "or"
.. also when searching for empty multilinks with '-1' as part of the
list of IDs.
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Fri, 07 May 2021 20:50:08 +0200 |
| parents | d3a5d0d95869 |
| children | f3fcd6628c0c |
line wrap: on
line diff
--- a/roundup/backends/back_anydbm.py Fri May 07 16:01:57 2021 +0200 +++ b/roundup/backends/back_anydbm.py Fri May 07 20:50:08 2021 +0200 @@ -122,12 +122,17 @@ def __init__(self, v): try: opcodes = [int(x) for x in v] - if min(opcodes) >= -1: raise ValueError() + if min(opcodes) >= -1: + raise ValueError() compiled = compile_expression(opcodes) self.evaluate = lambda x: compiled.evaluate([int(y) for y in x]) except: - self.evaluate = lambda x: bool(set(x) & set(v)) + if '-1' in v: + v = [x for x in v if int(x) > 0] + self.evaluate = lambda x: bool(set(x) & set(v)) or not x + else: + self.evaluate = lambda x: bool(set(x) & set(v)) # # Now the database @@ -1908,7 +1913,8 @@ # otherwise, make sure this node has each of the # required values expr = Expression(v) - if expr.evaluate(nv): match = 1 + if expr.evaluate(nv): + match = 1 elif t == STRING: if nv is None: nv = ''
