[FIX] mail: compute display_name for partner and user
task-2322135 closes odoo/odoo#58374 X-original-commit: d9bdbde95c3694ecdaccd58b5475631137c22e93 Related: odoo/enterprise#13478 Signed-off-by: Sébastien Theys (seb) <seb@odoo.com> Co-authored-by: Sébastien Theys <seb@odoo.com>
This commit is contained in:
committed by
Sébastien Theys
co-authored by
Sébastien Theys
parent
86959c0144
commit
add71e94b5
@@ -36,7 +36,7 @@ function factory(dependencies) {
|
||||
const userData = {
|
||||
id: userNameGet[0],
|
||||
partner: [['insert', partnerData]],
|
||||
partnerDisplayName: userNameGet[1],
|
||||
display_name: userNameGet[1],
|
||||
};
|
||||
data2.user = [['insert', userData]];
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ class Activity extends Component {
|
||||
assigneeNameOrDisplayName: (
|
||||
activity &&
|
||||
activity.assignee &&
|
||||
activity.assignee.nameOrDisplayName()
|
||||
activity.assignee.nameOrDisplayName
|
||||
),
|
||||
};
|
||||
});
|
||||
@@ -60,7 +60,7 @@ class Activity extends Component {
|
||||
* @returns {string}
|
||||
*/
|
||||
get assignedUserText() {
|
||||
return _.str.sprintf(this.env._t("for %s"), this.activity.assignee.nameOrDisplayName());
|
||||
return _.str.sprintf(this.env._t("for %s"), this.activity.assignee.nameOrDisplayName);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="o_Activity_sidebar">
|
||||
<div class="o_Activity_user">
|
||||
<t t-if="activity.assignee">
|
||||
<img class="o_Activity_userAvatar" t-attf-src="/web/image/res.users/{{ activity.assignee.id }}/image_128" t-att-alt="activity.assignee.nameOrDisplayName()"/>
|
||||
<img class="o_Activity_userAvatar" t-attf-src="/web/image/res.users/{{ activity.assignee.id }}/image_128" t-att-alt="activity.assignee.nameOrDisplayName"/>
|
||||
</t>
|
||||
<div class="o_Activity_iconContainer"
|
||||
t-att-class="{
|
||||
@@ -65,17 +65,17 @@
|
||||
<dt>Created</dt>
|
||||
<dd class="o_Activity_detailsCreation">
|
||||
<t t-esc="formattedCreateDatetime"/>
|
||||
<img class="o_Activity_detailsUserAvatar o_Activity_detailsCreatorAvatar" t-attf-src="/web/image/res.users/{{ activity.creator.id }}/image_128" t-att-title="activity.creator.nameOrDisplayName()" t-att-alt="activity.creator.nameOrDisplayName()"/>
|
||||
<img class="o_Activity_detailsUserAvatar o_Activity_detailsCreatorAvatar" t-attf-src="/web/image/res.users/{{ activity.creator.id }}/image_128" t-att-title="activity.creator.nameOrDisplayName" t-att-alt="activity.creator.nameOrDisplayName"/>
|
||||
<span class="o_Activity_detailsCreator">
|
||||
<t t-esc="activity.creator.nameOrDisplayName()"/>
|
||||
<t t-esc="activity.creator.nameOrDisplayName"/>
|
||||
</span>
|
||||
</dd>
|
||||
</t>
|
||||
<t t-if="activity.assignee">
|
||||
<dt>Assigned to</dt>
|
||||
<dd class="o_Activity_detailsAssignation">
|
||||
<img class="o_Activity_detailsUserAvatar o_Activity_detailsAssignationUserAvatar" t-attf-src="/web/image/res.users/{{ activity.assignee.id }}/image_128" t-att-title="activity.assignee.nameOrDisplayName()" t-att-alt="activity.assignee.nameOrDisplayName()"/>
|
||||
<t t-esc="activity.assignee.nameOrDisplayName()"/>
|
||||
<img class="o_Activity_detailsUserAvatar o_Activity_detailsAssignationUserAvatar" t-attf-src="/web/image/res.users/{{ activity.assignee.id }}/image_128" t-att-title="activity.assignee.nameOrDisplayName" t-att-alt="activity.assignee.nameOrDisplayName"/>
|
||||
<t t-esc="activity.assignee.nameOrDisplayName"/>
|
||||
</dd>
|
||||
</t>
|
||||
<dt>Due on</dt>
|
||||
|
||||
@@ -375,7 +375,7 @@ QUnit.test('activity details toggle', async function (assert) {
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(today.getDate() + 1);
|
||||
const activity = this.env.models['mail.activity'].create({
|
||||
creator: [['insert', { id: 1, partnerDisplayName: "Admin" }]],
|
||||
creator: [['insert', { id: 1, display_name: "Admin" }]],
|
||||
dateCreate: date_to_str(today),
|
||||
dateDeadline: date_to_str(tomorrow),
|
||||
state: 'planned',
|
||||
@@ -425,8 +425,8 @@ QUnit.test('activity details layout', async function (assert) {
|
||||
const tomorrow = new Date();
|
||||
tomorrow.setDate(today.getDate() + 1);
|
||||
const activity = this.env.models['mail.activity'].create({
|
||||
assignee: [['insert', { id: 10, partnerDisplayName: "Pauvre pomme" }]],
|
||||
creator: [['insert', { id: 1, partnerDisplayName: "Admin" }]],
|
||||
assignee: [['insert', { id: 10, display_name: "Pauvre pomme" }]],
|
||||
creator: [['insert', { id: 1, display_name: "Admin" }]],
|
||||
dateCreate: date_to_str(today),
|
||||
dateDeadline: date_to_str(tomorrow),
|
||||
state: 'planned',
|
||||
|
||||
@@ -94,7 +94,7 @@ function factory(dependencies) {
|
||||
data2.creator = [
|
||||
['insert', {
|
||||
id: data.create_uid[0],
|
||||
partnerDisplayName: data.create_uid[1],
|
||||
display_name: data.create_uid[1],
|
||||
}],
|
||||
];
|
||||
}
|
||||
@@ -109,7 +109,7 @@ function factory(dependencies) {
|
||||
data2.assignee = [
|
||||
['insert', {
|
||||
id: data.user_id[0],
|
||||
partnerDisplayName: data.user_id[1],
|
||||
display_name: data.user_id[1],
|
||||
}],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -56,7 +56,7 @@ function factory(dependencies) {
|
||||
data2.user = [
|
||||
['insert', {
|
||||
id: data.user_id[0],
|
||||
partnerDisplayName: data.user_id[1],
|
||||
display_name: data.user_id[1],
|
||||
}],
|
||||
];
|
||||
}
|
||||
@@ -246,7 +246,15 @@ function factory(dependencies) {
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @returns {string}
|
||||
* @returns {string|undefined}
|
||||
*/
|
||||
_computeDisplayName() {
|
||||
return this.display_name || this.user && this.user.display_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @returns {string|undefined}
|
||||
*/
|
||||
_computeNameOrDisplayName() {
|
||||
return this.name || this.display_name;
|
||||
@@ -263,7 +271,12 @@ function factory(dependencies) {
|
||||
}),
|
||||
country: many2one('mail.country'),
|
||||
display_name: attr({
|
||||
compute: '_computeDisplayName',
|
||||
default: "",
|
||||
dependencies: [
|
||||
'display_name',
|
||||
'userDisplayName',
|
||||
],
|
||||
}),
|
||||
email: attr(),
|
||||
failureNotifications: one2many('mail.notification', {
|
||||
@@ -304,6 +317,12 @@ function factory(dependencies) {
|
||||
user: one2one('mail.user', {
|
||||
inverse: 'partner',
|
||||
}),
|
||||
/**
|
||||
* Serves as compute dependency.
|
||||
*/
|
||||
userDisplayName: attr({
|
||||
related: 'user.display_name',
|
||||
}),
|
||||
};
|
||||
|
||||
Partner.modelName = 'mail.partner';
|
||||
|
||||
@@ -84,17 +84,6 @@ function factory(dependencies) {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns {string}
|
||||
*/
|
||||
nameOrDisplayName() {
|
||||
const partner = this.partner;
|
||||
if (!partner) {
|
||||
return this.partnerDisplayName;
|
||||
}
|
||||
return partner.nameOrDisplayName;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the chat between this user and the current user.
|
||||
*
|
||||
@@ -195,25 +184,56 @@ function factory(dependencies) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @override
|
||||
* @private
|
||||
* @returns {string|undefined}
|
||||
*/
|
||||
_updateAfter(previous) {
|
||||
if (this.partnerDisplayName && this.partner) {
|
||||
this.partner.update({ display_name: this.partnerDisplayName });
|
||||
}
|
||||
_computeDisplayName() {
|
||||
return this.display_name || this.partner && this.partner.display_name;
|
||||
}
|
||||
|
||||
/**
|
||||
* @private
|
||||
* @returns {string|undefined}
|
||||
*/
|
||||
_computeNameOrDisplayName() {
|
||||
return this.partner && this.partner.nameOrDisplayName || this.display_name;
|
||||
}
|
||||
}
|
||||
|
||||
User.fields = {
|
||||
id: attr(),
|
||||
display_name: attr({
|
||||
compute: '_computeDisplayName',
|
||||
dependencies: [
|
||||
'display_name',
|
||||
'partnerDisplayName',
|
||||
],
|
||||
}),
|
||||
model: attr({
|
||||
default: 'res.user',
|
||||
}),
|
||||
nameOrDisplayName: attr({
|
||||
compute: '_computeNameOrDisplayName',
|
||||
dependencies: [
|
||||
'display_name',
|
||||
'partnerNameOrDisplayName',
|
||||
]
|
||||
}),
|
||||
partner: one2one('mail.partner', {
|
||||
inverse: 'user',
|
||||
}),
|
||||
partnerDisplayName: attr(),
|
||||
/**
|
||||
* Serves as compute dependency.
|
||||
*/
|
||||
partnerDisplayName: attr({
|
||||
related: 'partner.display_name',
|
||||
}),
|
||||
/**
|
||||
* Serves as compute dependency.
|
||||
*/
|
||||
partnerNameOrDisplayName: attr({
|
||||
related: 'partner.nameOrDisplayName',
|
||||
}),
|
||||
};
|
||||
|
||||
User.modelName = 'mail.user';
|
||||
|
||||
Reference in New Issue
Block a user