From 09dd19078020f0e9e992d7b11a8080df430f6458 Mon Sep 17 00:00:00 2001 From: Holger Brunn Date: Sun, 15 Sep 2019 06:12:55 +0200 Subject: [PATCH] [ADD] extend the demo module to showcase more possibilities --- .../models/x2m_demo.py | 22 +++++++++++- .../views/x2m_demo.xml | 10 +++++- .../wizard/x2m_matrix.py | 8 ++--- .../wizard/x2m_matrix.xml | 36 +++++++++++++++++++ 4 files changed, 70 insertions(+), 6 deletions(-) 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 + +
+ + + + + + + +
+
+
+