diff --git a/addons/spreadsheet/static/src/list/list_data_source.js b/addons/spreadsheet/static/src/list/list_data_source.js index affb42030a7..ce3c8472b77 100644 --- a/addons/spreadsheet/static/src/list/list_data_source.js +++ b/addons/spreadsheet/static/src/list/list_data_source.js @@ -5,6 +5,12 @@ import { LoadingDataError } from "@spreadsheet/o_spreadsheet/errors"; import { _t } from "@web/core/l10n/translation"; import { sprintf } from "@web/core/utils/strings"; import { orderByToString } from "@web/views/utils"; +import { + formatDateTime, + deserializeDateTime, + formatDate, + deserializeDate, +} from "@web/core/l10n/dates"; import * as spreadsheet from "@odoo/o-spreadsheet"; @@ -152,8 +158,9 @@ export default class ListDataSource extends OdooViewsDataSource { case "boolean": return record[fieldName] ? "TRUE" : "FALSE"; case "date": + return record[fieldName] ? toNumber(this._formatDate(record[fieldName])) : ""; case "datetime": - return record[fieldName] ? toNumber(record[fieldName]) : ""; + return record[fieldName] ? toNumber(this._formatDateTime(record[fieldName])) : ""; default: return record[fieldName] || ""; } @@ -163,6 +170,16 @@ export default class ListDataSource extends OdooViewsDataSource { // Private //-------------------------------------------------------------------------- + _formatDateTime(dateValue) { + const date = deserializeDateTime(dateValue); + return formatDateTime(date); + } + + _formatDate(dateValue) { + const date = deserializeDate(dateValue); + return formatDate(date); + } + /** * Ask the parent data source to force a reload of this data source in the * next clock cycle. It's necessary when this.limit was updated and new diff --git a/addons/spreadsheet/static/tests/utils/model.js b/addons/spreadsheet/static/tests/utils/model.js index 68858e9d62f..4253c3299e4 100644 --- a/addons/spreadsheet/static/tests/utils/model.js +++ b/addons/spreadsheet/static/tests/utils/model.js @@ -2,6 +2,7 @@ import { ormService } from "@web/core/orm_service"; import { registry } from "@web/core/registry"; +import { makeFakeLocalizationService } from "@web/../tests/helpers/mock_services"; import { makeTestEnv } from "@web/../tests/helpers/mock_env"; import { nextTick } from "@web/../tests/helpers/utils"; @@ -31,6 +32,7 @@ export function setupDataSourceEvaluation(model) { */ export async function createModelWithDataSource(params = {}) { registry.category("services").add("orm", ormService, { force: true }); + registry.category("services").add("localization", makeFakeLocalizationService(), { force: true }); const env = await makeTestEnv({ serverData: params.serverData || getBasicServerData(), mockRPC: params.mockRPC,