def print_report(report_class, *args, **kwargs): rv = PrintReportEvent.emit(report_class, *args, **kwargs) if rv: return rv filters = kwargs.pop('filters', None) if filters: kwargs = describe_search_filters_for_reports(filters, **kwargs) tmp = tempfile.mktemp(suffix='.pdf', prefix='stoqlib-reporting') report = report_class(tmp, *args, **kwargs) report.filename = tmp if _system == "Windows": report.save() log.info("Starting PDF reader for %r" % (report.filename, )) # Simply execute the file os.startfile(report.filename) return if isinstance(report, HTMLReport): op = PrintOperationWEasyPrint(report) op.set_threaded() else: op = PrintOperationPoppler(report) rv = op.run() return rv
def test_print_report_event(self, print_report): # We need the UI for the events setup ui = BikeShopUI() # We need to save this in a variable, even though we dont use it, # otherwise the callback will not be triggered, since it is a weakref ui # pyflakes # Emitting with something different from WorkOrderQuoteReport rv = PrintReportEvent.emit(object) self.assertFalse(rv) self.assertEqual(print_report.call_count, 0) # Emitting with a WorkOrderQuoteReport order = self.create_workorder() rv = PrintReportEvent.emit(WorkOrderQuoteReport, order) self.assertTrue(rv) print_report.assert_called_once_with(BikeShopWorkOrderQuoteReport, order)
def test_print_report_event(self, print_report): # Emitting with something different from SaleOrderReport rv = PrintReportEvent.emit(object) self.assertFalse(rv) self.assertEquals(print_report.call_count, 0) # Emitting with SaleOrderReport, but without workorders sale = self.create_sale() rv = PrintReportEvent.emit(SaleOrderReport, sale) self.assertFalse(rv) self.assertEquals(print_report.call_count, 0) # Emitting with SaleOrderReport and with workorders optical_wo = self.create_optical_work_order() optical_wo.work_order.sale = sale rv = PrintReportEvent.emit(SaleOrderReport, sale) self.assertTrue(rv) print_report.assert_called_once_with(OpticalWorkOrderReceiptReport, [optical_wo.work_order])