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