Skip to content

Commit de6dfa4

Browse files
[IMP] maintenance_location: Add inverse relation and equipment count to locations
1 parent 6467c6b commit de6dfa4

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

maintenance_location/models/maintenance_location.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,28 @@ class MaintenanceLocation(models.Model):
3535
sequence = fields.Integer(default=10)
3636
active = fields.Boolean(default=True)
3737

38+
equipment_ids = fields.One2many(
39+
"maintenance.equipment", "location_id", string="Equipments"
40+
)
41+
42+
equipment_count = fields.Integer(
43+
string="Equipment Count",
44+
compute="_compute_equipment_count",
45+
)
46+
47+
@api.depends("equipment_ids")
48+
def _compute_equipment_count(self):
49+
res = self.env["maintenance.equipment"].read_group(
50+
domain=[("location_id", "in", self.ids)],
51+
fields=["location_id"],
52+
groupby=["location_id"],
53+
)
54+
55+
res_dict = {x["location_id"][0]: x["location_id_count"] for x in res}
56+
57+
for location in self:
58+
location.equipment_count = res_dict.get(location.id, 0)
59+
3860
@api.depends("name", "parent_id.complete_name")
3961
def _compute_complete_name(self):
4062
for location in self:

maintenance_location/tests/test_maintenance_location.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ def setUpClass(cls):
2626
{"name": "Laptop", "location_id": self.location_1.id}
2727
)
2828

29+
self.equipment = self.env["maintenance.equipment"].create(
30+
{"name": "Printer", "location_id": self.location_1.id}
31+
)
32+
2933
self.plan = self.env["maintenance.plan"].create(
3034
{
3135
"equipment_id": self.equipment.id,
@@ -51,3 +55,7 @@ def test_request_creation(self):
5155
self.assertTrue(request)
5256
for r in request:
5357
self.assertEqual(r.location_id.id, self.location_1.id)
58+
59+
def test_count_equipment(self):
60+
self.assertEqual(self.location_1.equipment_count, 3)
61+
self.assertEqual(self.location_2.equipment_count, 0)

maintenance_location/views/maintenance_location.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
Latitude: <field name="latitude" nolabel="1" /><br />
2323
Longitude: <field name="longitude" nolabel="1" />
2424
</span>
25+
<field name="equipment_ids" widget="many2many_tags" />
2526
</group>
2627
</sheet>
2728
</form>
@@ -42,6 +43,7 @@
4243
<field name="arch" type="xml">
4344
<tree>
4445
<field name="complete_name" />
46+
<field name="equipment_count" />
4547
</tree>
4648
</field>
4749
</record>

0 commit comments

Comments
 (0)