43 lines
1.3 KiB
Python
Executable File
43 lines
1.3 KiB
Python
Executable File
# Copyright 2019 Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
|
|
|
|
from odoo import fields, models
|
|
|
|
|
|
class ResPartner(models.Model):
|
|
_inherit = "res.partner"
|
|
|
|
wishlists_count = fields.Integer(
|
|
compute="_compute_wishlists_count", string="# Wishlists"
|
|
)
|
|
|
|
def _compute_wishlists_count(self):
|
|
# do just one query for all records
|
|
data = self.env["product.set"].read_group(
|
|
self._wishlist_domain(), ["partner_id"], ["partner_id"]
|
|
)
|
|
data_mapped = {
|
|
count["partner_id"][0]: count["partner_id_count"] for count in data
|
|
}
|
|
for rec in self:
|
|
rec.wishlists_count = data_mapped.get(rec.id, 0)
|
|
|
|
def _wishlist_domain(self):
|
|
return [("partner_id", "in", self.ids), ("typology", "=", "wishlist")]
|
|
|
|
def action_view_wishlists(self):
|
|
self.ensure_one()
|
|
xmlid = "product_set.act_open_product_set_view"
|
|
action = self.env["ir.actions.act_window"]._for_xml_id(xmlid)
|
|
action.update(
|
|
{
|
|
"name": self.env._("Wishlists"),
|
|
"domain": self._wishlist_domain(),
|
|
"context": {
|
|
"default_typology": "wishlist",
|
|
"default_partner_id": self.id,
|
|
},
|
|
}
|
|
)
|
|
return action
|