From 045a8f26b2cda43c0e204960112a4024c1d7f042 Mon Sep 17 00:00:00 2001
From: Wolfgang Taferner <wtaferner@users.noreply.github.com>
Date: Sun, 3 Nov 2019 07:41:45 +0000
Subject: [PATCH] [FIX] base: multi-pages and multi-records traceback

In case of a multi-record and multi-page (i.e. 2 pages per PDF) report
the assertion is triggered b/c we have 4 pages and only two records with
a PDF of 2 pages each, so the outline_page needs to be unique before
assertion.

len([0, 0, 2, 2]) != len([record_id1, record_id2])
len([0, 2]) == len([record_id1, record_id2])

closes odoo/odoo#40076

X-original-commit: 573e57773b78a5bcac97c9dab4f531a5826e94c0
Signed-off-by: Nicolas Martinelli (nim) <nim@odoo.com>
---
 odoo/addons/base/models/ir_actions_report.py | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/odoo/addons/base/models/ir_actions_report.py b/odoo/addons/base/models/ir_actions_report.py
index 570ae7c9917f..94dee1a834a5 100644
--- a/odoo/addons/base/models/ir_actions_report.py
+++ b/odoo/addons/base/models/ir_actions_report.py
@@ -595,7 +595,8 @@ class IrActionsReport(models.Model):
                     reader = PdfFileReader(pdf_content_stream)
                     if reader.trailer['/Root'].get('/Dests'):
                         outlines_pages = sorted(
-                            [outline.getObject()[0] for outline in reader.trailer['/Root']['/Dests'].values()])
+                            set(outline.getObject()[0] for outline in reader.trailer['/Root']['/Dests'].values())
+                        )
                         assert len(outlines_pages) == len(res_ids)
                         for i, num in enumerate(outlines_pages):
                             to = outlines_pages[i + 1] if i + 1 < len(outlines_pages) else reader.numPages
-- 
GitLab