def getTriggerAndTemplateAndParameterValues(self, ruleAntecedent): checkData(locals()) triggers = Triggers() triggerList = triggers.getAllTriggers() for trigger in triggerList: # A trigger.ruleAntecedent is represented as set of templates models: # Example "template1 | template2 | template2" # Where each template can be like # "it is between %d AM and %d AM | it is between %d AM and %d PM | it is between %d PM and %d AM | it is between %d PM and %d PM" models = trigger.ruleAntecedent.split('|') for model in models: parameterNumber = model.count("@val") originalModel = model.strip() model = model.replace("@val","(.+)").strip() matchObj = re.match( model, ruleAntecedent, re.M|re.I) if matchObj: parameterValues = {} for i in range(0,parameterNumber): parameterValues[str(i)] = matchObj.group(i + 1) return (trigger, originalModel, parameterValues) raise NotWellFormedRuleError("Impossible to find any trigger corresponding to the following rule consequent > " + ruleAntecedent)
def getTriggers(self, buildingName = None, groupId = None): checkData(locals()) from app.backend.model.triggers import Triggers triggers = Triggers() triggerList = [] for trigger in triggers.getAllTriggers(): triggerList.append(trigger.getDict()) return {"triggers" : triggerList}
def getTriggerCategories(self): checkData(locals()) triggers = Triggers() triggerList = triggers.getAllTriggers() categories = [] for trigger in triggerList: if trigger.category not in categories: categories.append(trigger.category) return categories