Files
rmmanager/core/runtime/applyconditions.py
T

73 lines
2.6 KiB
Python

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