From a84d655e7cff0b844d4e7c83984fb9e1a24bbf6c Mon Sep 17 00:00:00 2001 From: Laurent Mignon Date: Tue, 4 Oct 2016 09:52:00 +0200 Subject: [PATCH] [IMP] Add the possiblity to get the template from an absolute path on the server --- report_py3o/models/ir_report.py | 3 ++- report_py3o/py3o_parser.py | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/report_py3o/models/ir_report.py b/report_py3o/models/ir_report.py index 927994e3..2f520b98 100644 --- a/report_py3o/models/ir_report.py +++ b/report_py3o/models/ir_report.py @@ -38,7 +38,8 @@ class ReportXml(models.Model): size=128, help=( "If the user does not provide a template this will be used " - "it should be a relative path to root of YOUR module" + "it should be a relative path to root of YOUR module " + "or an absolute path on your server." )) report_type = fields.Selection(selection_add=[('py3o', "Py3o")]) diff --git a/report_py3o/py3o_parser.py b/report_py3o/py3o_parser.py index 36ed669d..ab8c41c5 100644 --- a/report_py3o/py3o_parser.py +++ b/report_py3o/py3o_parser.py @@ -88,16 +88,22 @@ class Py3oParser(report_sxw): report_obj.py3o_template_id.py3o_template_data ) - elif report_obj.py3o_template_fallback and report_obj.module: - # if the default is defined - flbk_filename = pkg_resources.resource_filename( - "openerp.addons.%s" % report_obj.module, - report_obj.py3o_template_fallback, - ) - if os.path.exists(flbk_filename): - # and it exists on the fileystem - with open(flbk_filename, 'r') as tmpl: - tmpl_data = tmpl.read() + elif report_obj.py3o_template_fallback: + tmpl_name = report_obj.py3o_template_fallback + flbk_filename = None + if report_obj.module: + # if the default is defined + flbk_filename = pkg_resources.resource_filename( + "openerp.addons.%s" % report_obj.module, + tmpl_name, + ) + elif os.path.isabs(tmpl_name): + # It is an absolute path + flbk_filename = os.path.normcase(os.path.normpath(tmpl_name)) + if flbk_filename and os.path.exists(flbk_filename): + # and it exists on the fileystem + with open(flbk_filename, 'r') as tmpl: + tmpl_data = tmpl.read() if tmpl_data is None: # if for any reason the template is not found