diff --git a/base_report_to_printer/models/printing_printer.py b/base_report_to_printer/models/printing_printer.py index 2dcea19..5e37bad 100644 --- a/base_report_to_printer/models/printing_printer.py +++ b/base_report_to_printer/models/printing_printer.py @@ -242,3 +242,18 @@ class PrintingPrinter(models.Model): self.mapped("server_id").update_printers() return True + + def print_test_page(self): + for printer in self: + connection = printer.server_id._open_connection() + if printer.model == "Local Raw Printer": + fd, file_name = mkstemp() + try: + os.write(fd, b"TEST") + finally: + os.close(fd) + connection.printTestPage(printer.system_name, file=file_name) + else: + connection.printTestPage(printer.system_name) + + self.mapped("server_id").update_jobs(which="completed") diff --git a/base_report_to_printer/tests/test_printing_printer.py b/base_report_to_printer/tests/test_printing_printer.py index 2352766..fe78c16 100644 --- a/base_report_to_printer/tests/test_printing_printer.py +++ b/base_report_to_printer/tests/test_printing_printer.py @@ -173,3 +173,10 @@ class TestPrintingPrinter(TransactionCase): printer = self.new_record() printer.disable() cups.Connection().disablePrinter.assert_called_once_with(printer.system_name) + + @mock.patch("%s.cups" % server_model) + def test_print_test_page(self, cups): + """ It should print a test page """ + printer = self.new_record() + printer.print_test_page() + cups.Connection().printTestPage.assert_called_once_with(printer.system_name) diff --git a/base_report_to_printer/views/printing_printer.xml b/base_report_to_printer/views/printing_printer.xml index 379aedd..5c7657c 100644 --- a/base_report_to_printer/views/printing_printer.xml +++ b/base_report_to_printer/views/printing_printer.xml @@ -31,6 +31,12 @@ string="Cancel all running jobs" confirm="Are you sure to want to cancel all jobs of this printer?" /> +