diff --git a/web_widget_x2many_2d_matrix_example/models/x2m_demo.py b/web_widget_x2many_2d_matrix_example/models/x2m_demo.py
index bfe884309..1f6a69977 100644
--- a/web_widget_x2many_2d_matrix_example/models/x2m_demo.py
+++ b/web_widget_x2many_2d_matrix_example/models/x2m_demo.py
@@ -10,8 +10,11 @@ class X2MDemo(models.Model):
line_ids = fields.One2many('x2m.demo.line', 'demo_id')
@api.multi
- def open_x2m_matrix(self):
+ def _open_x2m_matrix(self, view_xmlid):
wiz = self.env['x2m.matrix.demo.wiz'].create({})
+ view_id = self.env.ref(
+ 'web_widget_x2many_2d_matrix_example.%s' % view_xmlid,
+ ).id
return {
'name': 'Try x2many 2D matrix widget',
'type': 'ir.actions.act_window',
@@ -20,9 +23,22 @@ class X2MDemo(models.Model):
'res_model': 'x2m.matrix.demo.wiz',
'target': 'new',
'res_id': wiz.id,
+ 'view_id': view_id,
'context': self.env.context,
}
+ @api.multi
+ def open_x2m_matrix(self):
+ return self._open_x2m_matrix('x2many_2d_matrix_demo')
+
+ @api.multi
+ def open_x2m_matrix_selection(self):
+ return self._open_x2m_matrix('x2many_2d_matrix_demo_selection')
+
+ @api.multi
+ def open_x2m_matrix_many2one(self):
+ return self._open_x2m_matrix('x2many_2d_matrix_demo_many2one')
+
class X2MDemoLine(models.Model):
_name = 'x2m.demo.line'
@@ -32,3 +48,7 @@ class X2MDemoLine(models.Model):
demo_id = fields.Many2one('x2m.demo')
user_id = fields.Many2one('res.users')
value = fields.Integer()
+ value_selection = fields.Selection(
+ [('val1', 'Value 1'), ('val2', 'Value 2')],
+ )
+ value_many2one = fields.Many2one('res.groups')
diff --git a/web_widget_x2many_2d_matrix_example/views/x2m_demo.xml b/web_widget_x2many_2d_matrix_example/views/x2m_demo.xml
index 0149c0de9..ee8accc1f 100644
--- a/web_widget_x2many_2d_matrix_example/views/x2m_demo.xml
+++ b/web_widget_x2many_2d_matrix_example/views/x2m_demo.xml
@@ -13,6 +13,8 @@
+
+
@@ -20,7 +22,13 @@
diff --git a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py
index 84e80d480..8d4eacb0d 100644
--- a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py
+++ b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py
@@ -10,19 +10,19 @@ class X2mMatrixDemoWiz(models.TransientModel):
'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([])
- # 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 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 task
+ # 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
diff --git a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml
index 226de82bf..ddb92653c 100644
--- a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml
+++ b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml
@@ -19,4 +19,40 @@
+
+ x2m.matrix.demo.wiz
+ x2m.matrix.demo.wiz
+ form
+
+
+
+
+
+
+ x2m.matrix.demo.wiz
+ x2m.matrix.demo.wiz
+ form
+
+
+
+
+