mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-19 19:32:02 +02:00
Initial commit: OCA Technical packages (595 packages)
This commit is contained in:
commit
2cc02aac6e
24950 changed files with 2318079 additions and 0 deletions
66
odoo-bringout-oca-iot-iot_rule/iot_rule/models/iot_lock.py
Normal file
66
odoo-bringout-oca-iot-iot_rule/iot_rule/models/iot_lock.py
Normal file
|
|
@ -0,0 +1,66 @@
|
|||
# Copyright 2019 Creu Blanca
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
||||
|
||||
from odoo import fields, models
|
||||
|
||||
|
||||
class IotLock(models.Model):
|
||||
|
||||
_name = "iot.lock"
|
||||
_description = "IoT Lock"
|
||||
|
||||
name = fields.Char(required=True)
|
||||
description = fields.Text()
|
||||
rule_ids = fields.Many2many("iot.rule", string="Rules")
|
||||
action_ids = fields.One2many("iot.key.action", inverse_name="lock_id")
|
||||
active = fields.Boolean(default=True, required=True)
|
||||
|
||||
def check_access_unique_virtual_key(self, unique_virtual_key):
|
||||
self.ensure_one()
|
||||
key = self.env["iot.key"].search(
|
||||
[("unique_virtual_key", "=", unique_virtual_key)], limit=1
|
||||
)
|
||||
if not key:
|
||||
self._missing_key(unique_virtual_key)
|
||||
return False
|
||||
return self.check_access(key)
|
||||
|
||||
def _missing_key(self, unique_virtual_key):
|
||||
return self.env["iot.key.action"].create(
|
||||
self._missing_key_action_vals(unique_virtual_key)
|
||||
)
|
||||
|
||||
def _missing_key_action_vals(self, unique_virtual_key):
|
||||
return {
|
||||
"lock_id": self.id,
|
||||
"unique_virtual_key": unique_virtual_key,
|
||||
"result": "refused",
|
||||
}
|
||||
|
||||
def check_access(self, key):
|
||||
result = self.rule_ids._check_access(key)
|
||||
self.create_action(key, result)
|
||||
return result
|
||||
|
||||
def create_action(self, key, result):
|
||||
return self.env["iot.key.action"].create(self._create_action_vals(key, result))
|
||||
|
||||
def _create_action_vals(self, key, result):
|
||||
return {
|
||||
"lock_id": self.id,
|
||||
"key_id": key.id,
|
||||
"result": "accepted" if result else "refused",
|
||||
}
|
||||
|
||||
def view_actions(self):
|
||||
self.ensure_one()
|
||||
action = self.env.ref("iot_rule.iot_key_action_act_window").read()[0]
|
||||
action["domain"] = [("lock_id", "=", self.id)]
|
||||
return action
|
||||
|
||||
def get_virtual_keys(self, domain=None):
|
||||
self.ensure_one()
|
||||
if domain is None:
|
||||
domain = []
|
||||
keys = self.rule_ids._get_virtual_keys(domain)
|
||||
return keys.get_iot_rule_values()
|
||||
Loading…
Add table
Add a link
Reference in a new issue