Merge PR #2164 into 12.0

Signed-off-by legalsylvain
pull/2324/head
OCA-git-bot 2022-09-20 11:16:29 +00:00
commit eaff8ecb95
7 changed files with 39 additions and 6 deletions

View File

@ -220,7 +220,7 @@ odoo.define('web_widget_x2many_2d_matrix.X2Many2dMatrixRenderer', function (requ
*/ */
_renderLabelCell: function (record) { _renderLabelCell: function (record) {
var $td = $('<td>'); var $td = $('<td>');
var value = record.data[this.matrix_data.field_y_axis]; var value = record.data[this.matrix_data.field_label_y_axis];
if (value.type === 'record') { if (value.type === 'record') {
// We have a related record // We have a related record
value = value.data.display_name; value = value.data.display_name;

View File

@ -94,8 +94,8 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) {
this.x_axis = []; this.x_axis = [];
this.y_axis = []; this.y_axis = [];
_.each(records, function (record) { _.each(records, function (record) {
var x = record.data[this.field_x_axis], var x = record.data[this.field_label_x_axis],
y = record.data[this.field_y_axis]; y = record.data[this.field_label_y_axis];
if (x.type === 'record') { if (x.type === 'record') {
// We have a related record // We have a related record
x = x.data.display_name; x = x.data.display_name;
@ -126,6 +126,8 @@ odoo.define('web_widget_x2many_2d_matrix.widget', function (require) {
'field_value': this.field_value, 'field_value': this.field_value,
'field_x_axis': this.field_x_axis, 'field_x_axis': this.field_x_axis,
'field_y_axis': this.field_y_axis, 'field_y_axis': this.field_y_axis,
'field_label_x_axis': this.field_label_x_axis,
'field_label_y_axis': this.field_label_y_axis,
'columns': this.columns, 'columns': this.columns,
'rows': this.rows, 'rows': this.rows,
'show_row_totals': this.show_row_totals, 'show_row_totals': this.show_row_totals,

View File

@ -1,2 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import x2m_demo 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' _description = 'X2Many Demo'
name = fields.Char() name = fields.Char()
display_name = fields.Char(compute="_compute_display_name")
line_ids = fields.One2many('x2m.demo.line', 'demo_id') 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 @api.multi
def _open_x2m_matrix(self, view_xmlid): def _open_x2m_matrix(self, view_xmlid):
wiz = self.env['x2m.matrix.demo.wiz'].create({}) wiz = self.env['x2m.matrix.demo.wiz'].create({})
@ -46,7 +54,9 @@ class X2MDemoLine(models.Model):
name = fields.Char() name = fields.Char()
demo_id = fields.Many2one('x2m.demo') demo_id = fields.Many2one('x2m.demo')
demo_display_name = fields.Char(related="demo_id.display_name")
user_id = fields.Many2one('res.users') user_id = fields.Many2one('res.users')
user_display_name = fields.Char(related="user_id.matrix_display_name")
value = fields.Integer() value = fields.Integer()
value_selection = fields.Selection( value_selection = fields.Selection(
[('val1', 'Value 1'), ('val2', 'Value 2')], [('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), 'name': "{}'s task on {}".format(usr.name, rec.name),
'demo_id': rec.id, 'demo_id': rec.id,
'user_id': usr.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 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 if not rec.line_ids.filtered(lambda x: x.user_id == usr) else

View File

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