diff --git a/document_page/models/document_page.py b/document_page/models/document_page.py index ee682e804c8..3e15f2884ff 100644 --- a/document_page/models/document_page.py +++ b/document_page/models/document_page.py @@ -162,11 +162,10 @@ def _search_content(self, operator, value): @api.depends("history_ids") def _compute_history_head(self): + # history_ids is not sorted by _order in cache: a revision created + # during write() comes last, so pick the newest one explicitly. for rec in self: - if rec.history_ids: - rec.history_head = rec.history_ids[0] - else: - rec.history_head = False + rec.history_head = rec.history_ids.sorted("id", reverse=True)[:1] @api.onchange("parent_id") def _onchange_parent_id(self): diff --git a/document_page/tests/test_document_page.py b/document_page/tests/test_document_page.py index 804bd126575..66c228b70a0 100644 --- a/document_page/tests/test_document_page.py +++ b/document_page/tests/test_document_page.py @@ -42,6 +42,20 @@ def test_page_creation(self): page.content = "

New content for Demo Page

" self.assertEqual(len(page.history_ids), 2) + def test_page_edit_keeps_new_content(self): + page = self.page_obj.create( + { + "name": "Test Page 2", + "parent_id": self.category1.id, + "content": "

v1

", + } + ) + page.write({"content": "

v2

"}) + self.env.flush_all() + self.env.invalidate_all() + self.assertEqual(page.history_head, page.history_ids.sorted("id")[-1]) + self.assertEqual(page.content, "

v2

") + def test_category_template(self): page = self.page_obj.create( {"name": "Test Page 2", "parent_id": self.category1.id}