forked from OCA/maintenance
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmaintenance_equipment.py
68 lines (58 loc) · 2.28 KB
/
maintenance_equipment.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
# Copyright 2020 ForgeFlow S.L. (https://forgeflow.com)
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
from odoo import _, api, fields, models
class MaintenanceEquipment(models.Model):
_inherit = "maintenance.equipment"
_parent_name = "parent_id"
_parent_store = True
_parent_order = "name"
parent_id = fields.Many2one(
"maintenance.equipment",
"Parent Equipment",
index=True,
ondelete="cascade",
tracking=True,
)
child_ids = fields.One2many(
"maintenance.equipment", "parent_id", "Child Equipments"
)
parent_left = fields.Integer("Left Parent", index=1)
parent_right = fields.Integer("Right Parent", index=1)
child_count = fields.Integer(
compute="_compute_child_count", string="Number of child equipments"
)
display_name = fields.Char(compute="_compute_display_name")
complete_name = fields.Char(
compute="_compute_complete_name", store=True, recursive=True
)
parent_path = fields.Char(index=True, unaccent=False)
def name_get(self):
return [(equipment.id, equipment.complete_name) for equipment in self]
@api.depends("child_ids")
def _compute_child_count(self):
for equipment in self:
equipment.child_count = len(equipment.child_ids)
def _compute_display_name(self):
for equipment in self:
equipment.display_name = equipment.complete_name
@api.depends("name", "parent_id.complete_name") # recursive definition
def _compute_complete_name(self):
for equipment in self:
if equipment.parent_id:
parent_name = equipment.parent_id.complete_name
equipment.complete_name = parent_name + " / " + equipment.name
else:
equipment.complete_name = equipment.name
def preview_child_list(self):
return {
"name": _("Child equipment of %s") % self.name,
"type": "ir.actions.act_window",
"res_model": "maintenance.equipment",
"view_mode": "list,form",
"context": {
**self.env.context,
"default_parent_id": self.id,
"parent_id_editable": False,
},
"domain": [("parent_id", "=", self.id)],
}