3
0
Fork 0

[IMP] web_widget_x2many_2d_matrix_example: add field_label_x_axis / field_label_y_axis features in tests module

12.0
Sylvain LE GAL 2022-03-11 12:47:57 +01:00
parent e9debedbd0
commit b1cde72758
5 changed files with 34 additions and 3 deletions

View File

@ -1,2 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import x2m_demo
from . import res_users

View File

@ -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)

View File

@ -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')],

View File

@ -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

View File

@ -8,10 +8,12 @@
<field name="arch" type="xml">
<form>
<field name="line_ids" widget="x2many_2d_matrix"
field_x_axis="demo_id" field_y_axis="user_id" field_value="value">
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">
<tree>
<field name="demo_id"/>
<field name="demo_display_name"/>
<field name="user_id"/>
<field name="user_display_name"/>
<field name="value"/>
</tree>
</field>
@ -26,10 +28,12 @@
<field name="arch" type="xml">
<form>
<field name="line_ids" widget="x2many_2d_matrix"
field_x_axis="demo_id" field_y_axis="user_id" field_value="value_selection">
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">
<tree>
<field name="demo_id"/>
<field name="demo_display_name"/>
<field name="user_id"/>
<field name="user_display_name"/>
<field name="value_selection"/>
</tree>
</field>
@ -44,10 +48,12 @@
<field name="arch" type="xml">
<form>
<field name="line_ids" widget="x2many_2d_matrix"
field_x_axis="demo_id" field_y_axis="user_id" field_value="value_many2one">
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">
<tree>
<field name="demo_id"/>
<field name="demo_display_name"/>
<field name="user_id"/>
<field name="user_display_name"/>
<field name="value_many2one" domain="[('users', '=', user_id)]"/>
</tree>
</field>