Files
rmmanager/core/runtime/applyconditions.py
T

79 lines
2.8 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
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
if filter["operator"] == "is not":
if resolvedvalue is not 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