diff --git a/addons/spreadsheet/static/src/list/list_data_source.js b/addons/spreadsheet/static/src/list/list_data_source.js index 8058082d2f8..315c1867fb9 100644 --- a/addons/spreadsheet/static/src/list/list_data_source.js +++ b/addons/spreadsheet/static/src/list/list_data_source.js @@ -161,6 +161,10 @@ export default class ListDataSource extends OdooViewsDataSource { return record[fieldName] ? toNumber(this._formatDate(record[fieldName])) : ""; case "datetime": return record[fieldName] ? toNumber(this._formatDateTime(record[fieldName])) : ""; + case "properties": { + const properties = record[fieldName] || []; + return properties.map((property) => property.string).join(", "); + } default: return record[fieldName] || ""; } diff --git a/addons/spreadsheet/static/tests/lists/list_plugin_test.js b/addons/spreadsheet/static/tests/lists/list_plugin_test.js index 014ab37f34b..f17a82071d7 100644 --- a/addons/spreadsheet/static/tests/lists/list_plugin_test.js +++ b/addons/spreadsheet/static/tests/lists/list_plugin_test.js @@ -18,6 +18,7 @@ import { import { createSpreadsheetWithList } from "../utils/list"; import { registry } from "@web/core/registry"; import { RPCError } from "@web/core/network/rpc_service"; +import { getBasicServerData } from "../utils/data"; QUnit.module("spreadsheet > list plugin", {}, () => { QUnit.test("List export", async (assert) => { @@ -56,6 +57,24 @@ QUnit.module("spreadsheet > list plugin", {}, () => { assert.strictEqual(getCellValue(model, "A5"), "FALSE"); }); + QUnit.test("properties field displays property display names", async (assert) => { + const serverData = getBasicServerData(); + serverData.models.partner.records = [ + { + id: 45, + partner_properties: [ + { name: "dbfc66e0afaa6a8d", type: "date", string: "prop 1", default: false }, + { name: "f80b6fb58d0d4c72", type: "integer", string: "prop 2", default: 0 }, + ], + }, + ]; + const { model } = await createSpreadsheetWithList({ + serverData, + columns: ["partner_properties"], + }); + assert.strictEqual(getCellValue(model, "A2"), "prop 1, prop 2"); + }); + QUnit.test("Can display a field which is not in the columns", async function (assert) { const { model } = await createSpreadsheetWithList(); setCellContent(model, "A1", `=ODOO.LIST(1,1,"active")`); diff --git a/addons/spreadsheet/static/tests/utils/data.js b/addons/spreadsheet/static/tests/utils/data.js index 8bc869bfa9c..ea3aaceeb42 100644 --- a/addons/spreadsheet/static/tests/utils/data.js +++ b/addons/spreadsheet/static/tests/utils/data.js @@ -341,6 +341,13 @@ export function getBasicData() { group_operator: "avg", searchable: true, }, + partner_properties: { + string: "Properties", + type: "properties", + store: true, + sortable: true, + searchable: true, + }, }, records: [ {