diff --git a/addons/web/static/src/views/relational_model.js b/addons/web/static/src/views/relational_model.js index 143623c5d93..355e302e0ec 100644 --- a/addons/web/static/src/views/relational_model.js +++ b/addons/web/static/src/views/relational_model.js @@ -2016,7 +2016,7 @@ export class DynamicRecordList extends DynamicList { async fetchCount() { const keepLast = this.model.keepLast; this.count = await keepLast.add(this.model.orm.searchCount(this.resModel, this.domain)); - this.countLimit = this.count; + this.countLimit = Number.MAX_SAFE_INTEGER; this.hasLimitedCount = false; this.model.notify(); } @@ -2101,12 +2101,14 @@ export class DynamicRecordList extends DynamicList { limit: this.limit, offset: this.offset, order: orderByToString(this.orderBy), - count_limit: this.countLimit + 1, context: { bin_size: true, ...this.context, }, }; + if (this.countLimit !== Number.MAX_SAFE_INTEGER) { + kwargs.count_limit = this.countLimit + 1; + } const { records: rawRecords, length } = this.data || (await this.model.orm.webSearchRead( diff --git a/addons/web/static/tests/views/list_view_tests.js b/addons/web/static/tests/views/list_view_tests.js index 0baebd5412e..144212cf0fc 100644 --- a/addons/web/static/tests/views/list_view_tests.js +++ b/addons/web/static/tests/views/list_view_tests.js @@ -5654,6 +5654,7 @@ QUnit.module("Views", (hooks) => { QUnit.test("pager, ungrouped, with count limit reached", async function (assert) { patchWithCleanup(DynamicRecordList, { WEB_SEARCH_READ_COUNT_LIMIT: 3 }); + let expectedCountLimit = 4; await makeView({ type: "list", resModel: "foo", @@ -5661,6 +5662,9 @@ QUnit.module("Views", (hooks) => { arch: '', mockRPC(route, args) { assert.step(args.method); + if (args.method === "web_search_read") { + assert.strictEqual(args.kwargs.count_limit, expectedCountLimit); + } }, }); @@ -5674,6 +5678,10 @@ QUnit.module("Views", (hooks) => { assert.strictEqual(target.querySelector(".o_pager_value").innerText, "1-2"); assert.strictEqual(target.querySelector(".o_pager_limit").innerText, "4"); assert.verifySteps(["search_count"]); + + expectedCountLimit = undefined; + await click(target.querySelector(".o_pager_next")); + assert.verifySteps(["web_search_read"]); }); QUnit.test("pager, ungrouped, with count equals count limit", async function (assert) {