diff --git a/addons/web/static/src/model/model.js b/addons/web/static/src/model/model.js
index c1945e98423..745a2fd2cb7 100644
--- a/addons/web/static/src/model/model.js
+++ b/addons/web/static/src/model/model.js
@@ -133,11 +133,9 @@ export function useModelWithSampleData(ModelClass, params, options = {}) {
const globalState = component.props.globalState || {};
const localState = component.props.state || {};
- let useSampleModel = Boolean(
- "useSampleModel" in globalState
- ? globalState.useSampleModel
- : component.props.useSampleModel
- );
+ let useSampleModel =
+ component.props.useSampleModel &&
+ (!("useSampleModel" in globalState) || globalState.useSampleModel);
model.useSampleModel = useSampleModel;
const orm = model.orm;
let sampleORM = localState.sampleORM;
@@ -179,7 +177,9 @@ export function useModelWithSampleData(ModelClass, params, options = {}) {
useSetupView({
getGlobalState() {
- return { useSampleModel };
+ if (component.props.useSampleModel) {
+ return { useSampleModel };
+ }
},
getLocalState: () => {
return { sampleORM };
diff --git a/addons/web/static/tests/views/calendar/calendar_view_tests.js b/addons/web/static/tests/views/calendar/calendar_view_tests.js
index 5d5e9ac5efc..3076a7c764b 100644
--- a/addons/web/static/tests/views/calendar/calendar_view_tests.js
+++ b/addons/web/static/tests/views/calendar/calendar_view_tests.js
@@ -5426,4 +5426,62 @@ QUnit.module("Views", ({ beforeEach }) => {
"00 - bazar0 - chouette1 - brol10 - machin11 - chose100 - bidule1011000 - trucEdên@Hello#HelloJean-Paul 1Jean-Paul 2JeremyKévinRomelüThibaùltZoooroUndefined"
);
});
+
+ QUnit.test(
+ "sample data are not removed when switching back from calendar view",
+ async function (assert) {
+ serverData.models.event.records = [];
+ serverData.actions = {
+ 1: {
+ id: 1,
+ name: "Partners",
+ res_model: "event",
+ type: "ir.actions.act_window",
+ views: [
+ [false, "list"],
+ [false, "calendar"],
+ ],
+ },
+ };
+
+ serverData.views = {
+ "event,false,calendar": ``,
+ "event,false,list": `
+
+
+ `,
+
+ "event,false,search": ``,
+ };
+
+ const webClient = await createWebClient({
+ serverData,
+ async mockRPC(route, args) {
+ if (args.method === "check_access_rights") {
+ return true;
+ }
+ if (route.endsWith("/has_group")) {
+ return true;
+ }
+ },
+ });
+
+ await doAction(webClient, 1);
+
+ assert.containsOnce(target, ".o_list_view", "should have rendered a list view");
+ assert.containsOnce(target, ".o_view_sample_data", "should have sample data");
+
+ await click(target, ".o_cp_switch_buttons .o_calendar");
+ assert.containsOnce(
+ target,
+ ".o_calendar_container",
+ "should have rendered a calendar view"
+ );
+
+ await click(target, ".o_cp_switch_buttons .o_list");
+
+ assert.containsOnce(target, ".o_list_view", "should have rendered a list view");
+ assert.containsOnce(target, ".o_view_sample_data", "should have sample data");
+ }
+ );
});