Ejemplo n.º 1
0
    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