28 lines
1.3 KiB
Python
28 lines
1.3 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import _, api, fields, models
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
class ResCompany(models.Model):
|
|
_inherit = "res.company"
|
|
|
|
documents_project_folder_id = fields.Many2one(
|
|
'documents.document', string="Project Folder",
|
|
domain="[('type', '=', 'folder'), ('shortcut_document_id', '=', False)]", check_company=True,
|
|
default=lambda self: self.env.ref('documents_project.document_project_folder', raise_if_not_found=False),
|
|
context=lambda env: {
|
|
'default_type': 'folder',
|
|
'default_folder_id': (env.ref('documents_project.document_project_folder', raise_if_not_found=False) or env['documents.document']).id,
|
|
},
|
|
)
|
|
|
|
@api.constrains('documents_project_folder_id')
|
|
def _check_documents_project_folder_id_company_id(self):
|
|
if wrong_companies := self.filtered(lambda c: c.documents_project_folder_id.company_id.id not in {False, c.id}):
|
|
companies_list = "\n- ".join(f"{company.name}: {company.documents_project_folder_id.name}"
|
|
for company in wrong_companies)
|
|
raise ValidationError(
|
|
_("Company Project Folders cannot be linked to another company.%s", f'\n- {companies_list}')
|
|
)
|