55 lines
2.1 KiB
Python
55 lines
2.1 KiB
Python
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class FleetVehicle(models.Model):
|
|
_name = 'fleet.vehicle'
|
|
_inherit = ['fleet.vehicle', 'documents.mixin']
|
|
|
|
documents_fleet_settings = fields.Boolean(related="company_id.documents_fleet_settings", string="Centralize Fleet Documents")
|
|
document_count = fields.Integer(compute='_compute_document_count', string='Documents')
|
|
|
|
def _compute_document_count(self):
|
|
document_data = self.env['documents.document']._read_group([
|
|
('res_id', 'in', self.ids), ('res_model', '=', self._name)],
|
|
groupby=['res_id'], aggregates=['__count'])
|
|
mapped_data = dict(document_data)
|
|
for record in self:
|
|
record.document_count = mapped_data.get(record.id, 0)
|
|
|
|
def _get_document_folder(self):
|
|
return self.company_id.documents_fleet_folder
|
|
|
|
def _get_document_owner(self):
|
|
"""User can see only their own documents in the fleet folder (see _get_document_vals_access_rights)."""
|
|
return self.env.user
|
|
|
|
def _get_document_tags(self):
|
|
return self.company_id.documents_fleet_tags
|
|
|
|
def _check_create_documents(self):
|
|
return self.company_id.documents_fleet_settings and super()._check_create_documents()
|
|
|
|
def action_open_attachments(self):
|
|
self.ensure_one()
|
|
if not self.company_id.documents_fleet_settings:
|
|
return True
|
|
fleet_folder = self._get_document_folder()
|
|
fleet_tags = self._get_document_tags()
|
|
action = self.env['ir.actions.actions']._for_xml_id('documents.document_action_preference')
|
|
action['domain'] = [
|
|
'|',
|
|
('type', '=', 'folder'),
|
|
'&',
|
|
('res_model', '=', self._name),
|
|
('res_id', '=', self.id),
|
|
]
|
|
action['context'] = {
|
|
'default_res_id': self.id,
|
|
'default_res_model': self._name,
|
|
'searchpanel_default_user_folder_id': str(fleet_folder.id) if fleet_folder else False,
|
|
'searchpanel_default_tag_ids': fleet_tags.ids,
|
|
}
|
|
return action
|