Add module aeroo_report_to_printer

Minor code update in base_other_report_engines
This commit is contained in:
Alexis de Lattre
2015-11-02 23:04:29 +01:00
parent 214aafd243
commit 60e9caf2e7
6 changed files with 132 additions and 29 deletions

View File

@@ -0,0 +1,3 @@
# -*- coding: utf-8 -*-
from . import printing

View File

@@ -0,0 +1,50 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Aeroo Report to Printer module for Odoo
# Copyright (C) 2015 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <alexis.delattre@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
{
'name': 'Aeroo Report to Printer',
'version': '0.1',
'category': 'Aeroo',
'license': 'AGPL-3',
'summary': 'Connect aeroo_report to base_report_to_printer',
'description': """
Aeroo Report to Printer
=======================
There is a module *report_aeroo_direct_print* in https://github.com/aeroo/aeroo_reports that adds support for CUPS printing, but it's not as mature and clean as the OCA module *base_report_to_printer* from https://github.com/OCA/report-print-send.
And I want to use the best of both world : the best reporting engine (Aeroo) with the best CUPS printing module (base_report_to_printer). So I developped this small glue module.
You will find some sample code to use this module in the comments of the main Python file.
This module has been written by Alexis de Lattre from Akretion <alexis.delattre@akretion.com>.
""",
'author': 'Akretion',
'website': 'http://www.akretion.com',
'depends': [
'base_report_to_printer',
'report_aeroo',
'base_other_report_engines',
],
'installable': True,
}

View File

@@ -0,0 +1,70 @@
# -*- coding: utf-8 -*-
##############################################################################
#
# Aeroo Report to Printer module for Odoo
# Copyright (C) 2015 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <alexis.delattre@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from openerp import models, api, _
from openerp.exceptions import Warning as UserError
class PrintingPrinter(models.Model):
_inherit = 'printing.printer'
@api.multi
def aeroo_print_document(self, report_name, object_id, copies=1):
'''
Send an aeroo report to CUPS server for printing
Usage example :
Add this button in an inherit of the view 'stock.view_picking_form':
<button name="print_delivery" type="object" states="done"
string="Print 2 copies"/>
Add this code in the StockPicking class that inherit 'stock.picking'
@api.multi
def print_delivery(self):
if not self.env.user.printing_printer_id:
raise UserError(_(
"Missing 'Default Printer' in your preferences"))
self.env.user.printing_printer_id.aeroo_print_document(
'stock.report_picking', self.env.context['active_id'],
copies=2)
'''
self.ensure_one()
report = self.env['ir.actions.report.xml']._lookup_report(report_name)
report_xml = self.env['report']._get_report_from_name(report_name)
data = {
'model': report_xml.model,
'id': object_id,
'report_type': 'aeroo',
}
aeroo_report_content, aeroo_report_format = report.create(
self.env.cr, self.env.uid, [object_id],
data, context=dict(self.env.context))
if aeroo_report_format in ('pdf', 'raw'):
self.print_document(
report_name, aeroo_report_content, aeroo_report_format, copies)
else:
raise UserError(_(
"Format '%s' is not supported for printing")
% aeroo_report_format)
return True

View File

@@ -1,23 +1,3 @@
# -*- encoding: utf-8 -*- # -*- coding: utf-8 -*-
##############################################################################
#
# Base Other Report Engines module for OpenERP/Odoo
# Copyright (C) 2014 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <alexis.delattre@akretion.com>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as
# published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Affero General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
from . import report from . import report

View File

@@ -1,8 +1,8 @@
# -*- encoding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# Base Other Report Engines module for OpenERP/Odoo # Base Other Report Engines module for Odoo
# Copyright (C) 2014 Akretion (http://www.akretion.com) # Copyright (C) 2014-2015 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <alexis.delattre@akretion.com> # @author Alexis de Lattre <alexis.delattre@akretion.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify

View File

@@ -1,8 +1,8 @@
# -*- encoding: utf-8 -*- # -*- coding: utf-8 -*-
############################################################################## ##############################################################################
# #
# Base Other Report Engines module for OpenERP/Odoo # Base Other Report Engines module for Odoo
# Copyright (C) 2014 Akretion (http://www.akretion.com) # Copyright (C) 2014-2015 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <alexis.delattre@akretion.com> # @author Alexis de Lattre <alexis.delattre@akretion.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
@@ -20,10 +20,10 @@
# #
############################################################################## ##############################################################################
from openerp.osv import orm from openerp import models
class Report(orm.Model): class Report(models.Model):
_inherit = "report" _inherit = "report"
def _get_report_from_name(self, cr, uid, report_name): def _get_report_from_name(self, cr, uid, report_name):