diff --git a/addons/mail/static/src/js/m2x_avatar_user.js b/addons/mail/static/src/js/m2x_avatar_user.js
index 0d3d4fa4496..c8f90b2feab 100644
--- a/addons/mail/static/src/js/m2x_avatar_user.js
+++ b/addons/mail/static/src/js/m2x_avatar_user.js
@@ -97,4 +97,5 @@ export const Many2ManyAvatarUser = FieldMany2ManyTagsAvatar.extend(M2XAvatarMixi
fieldRegistry.add('many2one_avatar_user', Many2OneAvatarUser);
fieldRegistry.add('kanban.many2one_avatar_user', KanbanMany2OneAvatarUser);
+fieldRegistry.add('activity.many2one_avatar_user', KanbanMany2OneAvatarUser);
fieldRegistry.add('many2many_avatar_user', Many2ManyAvatarUser);
diff --git a/addons/mail/static/src/scss/activity_view.scss b/addons/mail/static/src/scss/activity_view.scss
index 276c78cc928..817227f1202 100644
--- a/addons/mail/static/src/scss/activity_view.scss
+++ b/addons/mail/static/src/scss/activity_view.scss
@@ -69,8 +69,9 @@
padding: 8px 8px;
cursor: pointer;
- > img {
+ .o_m2o_avatar > img, > img {
width: 32px;
+ height: 32px;
max-height: 32px;
margin-right: 16px;
}
diff --git a/addons/mail/static/tests/activity_tests.js b/addons/mail/static/tests/activity_tests.js
index 70d02c37b79..2e37e8f4123 100644
--- a/addons/mail/static/tests/activity_tests.js
+++ b/addons/mail/static/tests/activity_tests.js
@@ -528,4 +528,57 @@ QUnit.test("Activity view: discard an activity creation dialog", async function
assert.containsNone($, ".modal.o_technical_modal", "Activity Modal should be closed");
});
+QUnit.test('Activity view: many2one_avatar_user widget in activity view', async function (assert) {
+ assert.expect(3);
+
+ const taskModel = serverData.models.task;
+
+ serverData.models['res.users'] = {
+ fields: {
+ display_name: { string: "Displayed name", type: "char" },
+ avatar_128: { string: "Image 128", type: 'image' },
+ },
+ records: [{
+ id: 1,
+ display_name: "first user",
+ avatar_128: "Atmaram Bhide",
+ }],
+ };
+ taskModel.fields.user_id = { string: "Related User", type: "many2one", relation: 'res.users' };
+ taskModel.records[0].user_id = 1;
+
+ serverData.actions = {
+ 1: {
+ id: 1,
+ name: 'Task Action',
+ res_model: 'task',
+ type: 'ir.actions.act_window',
+ views: [[false, 'activity']],
+ }
+ };
+
+ serverData.views = {
+ 'task,false,activity': `
+
+
+
+
+
+
+
+ `,
+ 'task,false,search': '
'
+ };
+
+ const webClient = await createWebClient({ serverData, legacyParams: { withLegacyMockServer: true } });
+ await doAction(webClient, 1);
+
+ await legacyExtraNextTick();
+ assert.containsN(webClient, '.o_m2o_avatar', 2);
+ assert.containsOnce(webClient, 'tr[data-res-id=13] .o_m2o_avatar > img[src="/web/image/res.users/1/avatar_128"]',
+ "should have m2o avatar image");
+ assert.containsNone(webClient, '.o_m2o_avatar > span',
+ "should not have text on many2one_avatar_user if onlyImage node option is passed");
+});
+
});
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml
index dc20b6bd6eb..a2027ecf442 100644
--- a/addons/project/views/project_views.xml
+++ b/addons/project/views/project_views.xml
@@ -1082,7 +1082,7 @@
-
![]()
+