def getRule(self, rid): dbRule = self.db.read("SELECT rid, name, enabled FROM rule r WHERE r.rid = :rid", { "rid": int(rid) }) if dbRule == None: return False dbRule = dbRule.fetchone() if not dbRule: return False rule = Rule(dbRule['rid'], dbRule['name'], dbRule['enabled']) dbResConditions = self.db.read("SELECT c.cid, c.rule_rid, c.device_did, c.device_value_vid, c.operator, c.value, d.name FROM condition c LEFT JOIN device d ON d.did = c.device_did WHERE rule_rid = :rid", {"rid": rule.rid}) for (cid, rule_rid, device_did, device_value_vid, operator, value, device_name) in dbResConditions.fetchall(): rule.addCondition({ "cid": cid, "rule_rid": rule_rid, "device_did": device_did, "device_name": device_name, "device_value_vid": device_value_vid, "operator": operator, "value": value }) dbResActions = self.db.read("SELECT a.aid, a.rule_rid, a.device_did, a.device_action_aid, a.value, d.name FROM action a LEFT JOIN device d ON d.did = a.device_did WHERE a.rule_rid = :rid", {"rid": rule.rid}) for (aid, rule_rid, device_did, device_action_aid, value, device_name) in dbResActions.fetchall(): rule.addAction({ "aid": aid, "rule_rid": rule_rid, "device_did": device_did, "device_name": device_name, "device_action_aid": device_action_aid, "value": value }) return rule