diff --git a/base_report_to_printer/report_service.py b/base_report_to_printer/report_service.py index 2469f57..a714e55 100644 --- a/base_report_to_printer/report_service.py +++ b/base_report_to_printer/report_service.py @@ -45,41 +45,44 @@ original_exp_report_get = openerp.service.report.exp_report_get def exp_report_get(db, uid, report_id): + # First we need to know if the module is installed registry = openerp.registry(db) - cr = registry.cursor() - try: - # First of all load report defaults: name, action and printer - report_obj = registry['ir.actions.report.xml'] - report_name = self_reports[report_id]['report_name'] - report = report_obj.search(cr, uid, - [('report_name', '=', report_name)]) - if report: - report = report_obj.browse(cr, uid, report[0]) - data = report.behaviour()[report.id] - action = data['action'] - printer = data['printer'] - if action != 'client': - if (self_reports and self_reports.get(report_id) - and self_reports[report_id].get('result') - and self_reports[report_id].get('format')): - printer.print_document(report, - self_reports[report_id]['result'], - self_reports[report_id]['format']) - # FIXME "Warning" removed as it breaks the workflow - # it would be interesting to have a dialog box to - # confirm if we really want to print in this case it - # must be with a by pass parameter to allow massive - # prints - # raise osv.except_osv( - # _('Printing...'), - # _('Document sent to printer %s') % (printer,)) - - except: - cr.rollback() - raise - finally: - cr.close() + if registry.get('printing.printer'): + cr = registry.cursor() + try: + # First of all load report defaults: name, action and printer + report_obj = registry['ir.actions.report.xml'] + report_name = self_reports[report_id]['report_name'] + report = report_obj.search(cr, uid, + [('report_name', '=', report_name)]) + if report: + report = report_obj.browse(cr, uid, report[0]) + data = report.behaviour()[report.id] + action = data['action'] + printer = data['printer'] + if action != 'client': + if (self_reports and self_reports.get(report_id) + and self_reports[report_id].get('result') + and self_reports[report_id].get('format')): + printer.print_document(report, + self_reports + [report_id]['result'], + self_reports + [report_id]['format']) + # FIXME "Warning" removed as it breaks the workflow + # it would be interesting to have a dialog box to + # confirm if we really want to print in this case it + # must be with a by pass parameter to allow massive + # prints + # raise osv.except_osv( + # _('Printing...'), + # _('Document sent to printer %s') % (printer,)) + except: + cr.rollback() + raise + finally: + cr.close() return original_exp_report_get(db, uid, report_id)