web/web_widget_x2many_2d_matrix.../wizard/x2m_matrix.py

30 lines
1.1 KiB
Python

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class X2mMatrixDemoWiz(models.TransientModel):
_name = 'x2m.matrix.demo.wiz'
_description = 'X2Many Matrix Demo Wizard'
line_ids = fields.Many2many(
'x2m.demo.line', default=lambda self: self._default_line_ids())
def _default_line_ids(self):
"""take care that the widget gets records passed for every combination
of x2m.demo and res.users involved"""
recs = self.env['x2m.demo'].search([])
users = self.env['x2m.demo.line'].search([]).mapped('user_id')
return [
(0, 0, {
'name': "{}'s task on {}".format(usr.name, rec.name),
'demo_id': rec.id,
'user_id': usr.id,
})
# if there isn't a demo line record for the user, create a new one
if not rec.line_ids.filtered(lambda x: x.user_id == usr) else
# otherwise, return the line
(4, rec.line_ids.filtered(lambda x: x.user_id == usr)[0].id)
for rec in recs
for usr in users
]