Esempio n. 1
0
	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)
Esempio n. 2
0
	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}
Esempio n. 3
0
	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