diff --git a/web_widget_x2many_2d_matrix_example/models/__init__.py b/web_widget_x2many_2d_matrix_example/models/__init__.py index bf8b6ac47..40f134705 100644 --- a/web_widget_x2many_2d_matrix_example/models/__init__.py +++ b/web_widget_x2many_2d_matrix_example/models/__init__.py @@ -1,2 +1,3 @@ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from . import x2m_demo +from . import res_users diff --git a/web_widget_x2many_2d_matrix_example/models/res_users.py b/web_widget_x2many_2d_matrix_example/models/res_users.py new file mode 100644 index 000000000..d7e6b0859 --- /dev/null +++ b/web_widget_x2many_2d_matrix_example/models/res_users.py @@ -0,0 +1,13 @@ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +from odoo import models, api, fields + + +class ResUsers(models.Model): + _inherit = 'res.users' + + matrix_display_name = fields.Char(compute="_compute_matrix_display_name") + + @api.depends("name", "email") + def _compute_matrix_display_name(self): + for user in self: + user.matrix_display_name = "%s (%s)" % (user.name, user.email) 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 1f6a69977..6a13dc58d 100644 --- a/web_widget_x2many_2d_matrix_example/models/x2m_demo.py +++ b/web_widget_x2many_2d_matrix_example/models/x2m_demo.py @@ -7,8 +7,16 @@ class X2MDemo(models.Model): _description = 'X2Many Demo' name = fields.Char() + + display_name = fields.Char(compute="_compute_display_name") + line_ids = fields.One2many('x2m.demo.line', 'demo_id') + @api.depends("name") + def _compute_display_name(self): + for demo in self: + demo.display_name = "%s (#%s)" % (demo.name, demo.id) + @api.multi def _open_x2m_matrix(self, view_xmlid): wiz = self.env['x2m.matrix.demo.wiz'].create({}) @@ -46,7 +54,9 @@ class X2MDemoLine(models.Model): name = fields.Char() demo_id = fields.Many2one('x2m.demo') + demo_display_name = fields.Char(related="demo_id.display_name") user_id = fields.Many2one('res.users') + user_display_name = fields.Char(related="user_id.matrix_display_name") value = fields.Integer() value_selection = fields.Selection( [('val1', 'Value 1'), ('val2', 'Value 2')], 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 8d4eacb0d..e68a0130b 100644 --- a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py +++ b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.py @@ -19,6 +19,7 @@ class X2mMatrixDemoWiz(models.TransientModel): 'name': "{}'s task on {}".format(usr.name, rec.name), 'demo_id': rec.id, 'user_id': usr.id, + 'user_display_name': usr.matrix_display_name, }) # 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 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 ddb92653c..26755e149 100644 --- a/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml +++ b/web_widget_x2many_2d_matrix_example/wizard/x2m_matrix.xml @@ -8,10 +8,12 @@
+ field_x_axis="demo_id" field_y_axis="user_id" field_value="value" field_label_x_axis="demo_display_name" field_label_y_axis="user_display_name"> + + @@ -26,10 +28,12 @@ + field_x_axis="demo_id" field_y_axis="user_id" field_value="value_selection" field_label_x_axis="demo_display_name" field_label_y_axis="user_display_name"> + + @@ -44,10 +48,12 @@ + field_x_axis="demo_id" field_y_axis="user_id" field_value="value_many2one" field_label_x_axis="demo_display_name" field_label_y_axis="user_display_name"> + +