You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
29 lines
1.0 KiB
29 lines
1.0 KiB
# 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):
|
|
recs = self.env['x2m.demo'].search([])
|
|
# same with users
|
|
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,
|
|
'value': 0,
|
|
})
|
|
# if the project doesn't have a task for the user, create a new one
|
|
if not rec.line_ids.filtered(lambda x: x.user_id == usr) else
|
|
# otherwise, return the task
|
|
(4, rec.line_ids.filtered(lambda x: x.user_id == usr)[0].id)
|
|
for rec in recs
|
|
for usr in users
|
|
]
|