diff --git a/src/locks/lockhandler.py b/src/locks/lockhandler.py index 5262fb423d..1fc39fb1bc 100644 --- a/src/locks/lockhandler.py +++ b/src/locks/lockhandler.py @@ -211,7 +211,9 @@ class LockHandler(object): # parse the lock functions and separators funclist = _RE_FUNCS.findall(rhs) - evalstring = rhs.replace('AND','and').replace('OR','or').replace('NOT','not') + evalstring = rhs + for pattern in ('AND', 'OR', 'NOT'): + evalstring = re.sub(r"\b%s\b" % pattern, pattern.lower(), evalstring) nfuncs = len(funclist) for funcstring in funclist: funcname, rest = (part.strip().strip(')') for part in funcstring.split('(', 1)) @@ -226,7 +228,7 @@ class LockHandler(object): if len(lock_funcs) < nfuncs: continue try: - # purge the eval string of any superfluos items, then test it + # purge the eval string of any superfluous items, then test it evalstring = " ".join(_RE_OK.findall(evalstring)) eval(evalstring % tuple(True for func in funclist), {}, {}) except Exception: