mirror of
https://github.com/bringout/oca-technical.git
synced 2026-04-19 19:52:05 +02:00
66 lines
2.3 KiB
Python
66 lines
2.3 KiB
Python
# Copyright 2020 Creu Blanca
|
|
# Copyright 2024 Tecnativa - Víctor Martínez
|
|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
|
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class DmsStorage(models.Model):
|
|
_inherit = "dms.storage"
|
|
|
|
field_template_ids = fields.One2many(
|
|
comodel_name="dms.field.template",
|
|
inverse_name="storage_id",
|
|
string="File templated ids",
|
|
)
|
|
|
|
@api.model
|
|
def _build_documents_storage(self, storage):
|
|
storage_directories = []
|
|
model = self.env["dms.directory"]
|
|
directories = model.search_parents([["storage_id", "=", storage.id]])
|
|
for record in directories:
|
|
storage_directories.append(model._build_documents_view_directory(record))
|
|
return {
|
|
"id": "storage_%s" % storage.id,
|
|
"text": storage.name,
|
|
"icon": "fa fa-database",
|
|
"type": "storage",
|
|
"data": {"odoo_id": storage.id, "odoo_model": "dms.storage"},
|
|
"children": storage_directories,
|
|
}
|
|
|
|
@api.model
|
|
def get_js_tree_data(self):
|
|
return [record._build_documents_storage(record) for record in self.search([])]
|
|
|
|
@api.constrains("model_ids", "save_type")
|
|
def _constrain_model_ids(self):
|
|
for storage in self:
|
|
if storage.save_type == "attachment":
|
|
continue
|
|
if self.env["dms.directory"].search(
|
|
[
|
|
("storage_id", "=", storage.id),
|
|
("is_root_directory", "=", True),
|
|
(
|
|
"res_model",
|
|
"not in",
|
|
storage.mapped("model_ids.model"),
|
|
),
|
|
]
|
|
):
|
|
raise ValidationError(
|
|
_("Some directories are inconsistent with the storage models")
|
|
)
|
|
if storage.model_ids and self.env["dms.directory"].search(
|
|
[
|
|
("storage_id", "=", storage.id),
|
|
("is_root_directory", "=", True),
|
|
("res_model", "=", False),
|
|
]
|
|
):
|
|
raise ValidationError(
|
|
_("There are directories not associated to a record")
|
|
)
|