Files
rmmanager/core/runtime/applyconditions.py
T

67 lines
2.4 KiB
Python

def applyConditions(definition, dictionary, outputs):
if hasattr(definition, "filters"):
for filter in definition.filters:
try:
filtervalue = filter["filtervalue"]
if isinstance(filter["filtervalue"], dict):
filtervalue = outputs.get(filtervalue["outputs"])
if filtervalue is None:
continue
resolvedvalue = dictionary.get(filter["filterkey"])
if filter["operator"] == ">=":
if int(resolvedvalue or 0) >= int(filtervalue):
print(filter["print"])
return True, filter
if filter["operator"] == "<=":
if int(resolvedvalue or 0) <= int(filtervalue):
print(filter["print"])
return True, filter
if filter["operator"] == "==":
if resolvedvalue == filtervalue:
print(filter["print"])
return True, filter
if filter["operator"] == "!=":
if resolvedvalue != filtervalue:
print(filter["print"])
return True, filter
if filter["operator"] == ">":
if int(resolvedvalue or 0) > int(filtervalue):
print(filter["print"])
return True, filter
if filter["operator"] == "<":
if int(resolvedvalue or 0) < int(filtervalue):
print(filter["print"])
return True, filter
if filter["operator"] == "in":
if filtervalue in dictionary:
print(filter["print"])
return True, filter
if filter["operator"] == "is":
if resolvedvalue is filtervalue:
print(filter["print"])
return True, filter
except KeyError:
print(f"Value not present in runtime for filtering during {definition.name}")
#print(filter)
return True, filter
#continue
#except TypeError:
# print("TypeError")
# return False, None
return False, None