# 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
        ]