[16.0][FIX] base_report_to_printer: Expected singleton

Fixes https://github.com/OCA/report-print-send/issues/314
This commit is contained in:
Guille
2023-03-03 08:22:01 +01:00
committed by John Herholz
parent 581fa62b09
commit be95ebacff
2 changed files with 37 additions and 16 deletions

View File

@@ -157,16 +157,16 @@ class IrActionsReport(models.Model):
generated document as well. generated document as well.
""" """
document, doc_format = super()._render_qweb_pdf( document, doc_format = super()._render_qweb_pdf(
report_ref=report_ref, res_ids=res_ids, data=data report_ref, res_ids=res_ids, data=data
) )
report = self._get_report(report_ref)
behaviour = self.behaviour() behaviour = report.behaviour()
printer = behaviour.pop("printer", None) printer = behaviour.pop("printer", None)
can_print_report = self._can_print_report(behaviour, printer, document) can_print_report = report._can_print_report(behaviour, printer, document)
if can_print_report: if can_print_report:
printer.print_document( printer.print_document(
self, document, doc_format=self.report_type, **behaviour report, document, doc_format=report.report_type, **behaviour
) )
return document, doc_format return document, doc_format
@@ -180,14 +180,14 @@ class IrActionsReport(models.Model):
document, doc_format = super()._render_qweb_text( document, doc_format = super()._render_qweb_text(
report_ref, docids=docids, data=data report_ref, docids=docids, data=data
) )
report = self._get_report(report_ref)
behaviour = self.behaviour() behaviour = report.behaviour()
printer = behaviour.pop("printer", None) printer = behaviour.pop("printer", None)
can_print_report = self._can_print_report(behaviour, printer, document) can_print_report = report._can_print_report(behaviour, printer, document)
if can_print_report: if can_print_report:
printer.print_document( printer.print_document(
self, document, doc_format=self.report_type, **behaviour report, document, doc_format=report.report_type, **behaviour
) )
return document, doc_format return document, doc_format

View File

@@ -18,7 +18,7 @@ class TestReport(common.HttpCase):
"model": "ir.actions.report", "model": "ir.actions.report",
"report_name": "Test Report", "report_name": "Test Report",
} }
self.report_view = self.env["ir.ui.view"].create( self.report_pdf_view = self.env["ir.ui.view"].create(
{ {
"name": "Test", "name": "Test",
"type": "qweb", "type": "qweb",
@@ -27,15 +27,36 @@ class TestReport(common.HttpCase):
</t>""", </t>""",
} }
) )
self.report_imd = ( self.report_pdf_imd = (
self.env["ir.model.data"] self.env["ir.model.data"]
.sudo() .sudo()
.create( .create(
{ {
"name": "test", "name": "test_pdf",
"module": "base_report_to_printer", "module": "base_report_to_printer",
"model": "ir.ui.view", "model": "ir.ui.view",
"res_id": self.report_view.id, "res_id": self.report_pdf_view.id,
}
)
)
self.report_text_view = self.env["ir.ui.view"].create(
{
"name": "Test",
"type": "qweb",
"arch": """<t t-name="base_report_to_printer.test_text">
Test
</t>""",
}
)
self.report_text_imd = (
self.env["ir.model.data"]
.sudo()
.create(
{
"name": "test_text",
"module": "base_report_to_printer",
"model": "ir.ui.view",
"res_id": self.report_text_view.id,
} }
) )
) )
@@ -44,7 +65,7 @@ class TestReport(common.HttpCase):
"name": "Test", "name": "Test",
"report_type": "qweb-pdf", "report_type": "qweb-pdf",
"model": "res.partner", "model": "res.partner",
"report_name": "base_report_to_printer.test", "report_name": "base_report_to_printer.test_pdf",
} }
) )
self.report_text = self.Model.create( self.report_text = self.Model.create(
@@ -52,7 +73,7 @@ class TestReport(common.HttpCase):
"name": "Test", "name": "Test",
"report_type": "qweb-text", "report_type": "qweb-text",
"model": "res.partner", "model": "res.partner",
"report_name": "base_report_to_printer.test", "report_name": "base_report_to_printer.test_text",
} }
) )
self.partners = self.env["res.partner"] self.partners = self.env["res.partner"]
@@ -133,7 +154,7 @@ class TestReport(common.HttpCase):
self.report_text.property_printing_action_id.action_type = "server" self.report_text.property_printing_action_id.action_type = "server"
self.report_text.printing_printer_id = self.new_printer() self.report_text.printing_printer_id = self.new_printer()
document = self.report_text._render_qweb_text( document = self.report_text._render_qweb_text(
self.report.report_name, self.partners.ids self.report_text.report_name, self.partners.ids
) )
print_document.assert_called_once_with( print_document.assert_called_once_with(
self.report_text, self.report_text,