oca-technical/odoo-bringout-oca-maintenance-maintenance_location/maintenance_location/models/maintenance_location.py
2025-08-29 15:43:03 +02:00

54 lines
1.7 KiB
Python

# Copyright 2019 Creu Blanca
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class MaintenanceLocation(models.Model):
_name = "maintenance.location"
_description = "Maintenance Location"
_parent_name = "parent_id"
_parent_store = True
_parent_order = "name"
_rec_name = "complete_name"
_order = "complete_name,id"
name = fields.Char(required=True)
description = fields.Char()
complete_name = fields.Char(
compute="_compute_complete_name", store=True, recursive=True
)
partner_id = fields.Many2one("res.partner")
parent_id = fields.Many2one(
"maintenance.location",
"Parent Location",
index=True,
ondelete="cascade",
)
child_id = fields.One2many("maintenance.location", "parent_id", "Child Locations")
parent_path = fields.Char(index=True, unaccent=False)
latitude = fields.Float(digits=(16, 5))
longitude = fields.Float(digits=(16, 5))
sequence = fields.Integer(default=10)
active = fields.Boolean(default=True)
@api.depends("name", "parent_id.complete_name")
def _compute_complete_name(self):
for location in self:
if location.parent_id:
location.complete_name = "{} / {}".format(
location.parent_id.complete_name,
location.name,
)
else:
location.complete_name = location.name
@api.constrains("parent_id")
def _check_category_recursion(self):
if not self._check_recursion():
raise ValidationError(_("Error ! You cannot create recursive Locations."))
return True