49 lines
1.6 KiB
Python
49 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
from odoo import models, fields, _
|
|
from odoo.osv import expression
|
|
|
|
|
|
class Partner(models.Model):
|
|
_inherit = "res.partner"
|
|
|
|
document_count = fields.Integer('Document Count', compute='_compute_document_count')
|
|
|
|
def _compute_document_count(self):
|
|
read_group_var = self.env['documents.document']._read_group(
|
|
expression.AND([
|
|
[('partner_id', 'in', self.ids)],
|
|
[('type', '!=', 'folder')],
|
|
]),
|
|
groupby=['partner_id'],
|
|
aggregates=['__count'])
|
|
|
|
document_count_dict = {partner.id: count for partner, count in read_group_var}
|
|
for record in self:
|
|
record.document_count = document_count_dict.get(record.id, 0)
|
|
|
|
def action_see_documents(self):
|
|
self.ensure_one()
|
|
return {
|
|
'name': _('Documents'),
|
|
'domain': [('partner_id', '=', self.id)],
|
|
'res_model': 'documents.document',
|
|
'type': 'ir.actions.act_window',
|
|
'views': [(False, 'kanban')],
|
|
'view_mode': 'kanban',
|
|
'context': {
|
|
"default_partner_id": self.id,
|
|
"searchpanel_default_folder_id": False
|
|
},
|
|
}
|
|
|
|
def action_create_members_to_invite(self):
|
|
return {
|
|
'res_model': 'res.partner',
|
|
'target': 'new',
|
|
'type': 'ir.actions.act_window',
|
|
'view_id': self.env.ref('base.view_partner_simple_form').id,
|
|
'view_mode': 'form',
|
|
}
|