diff --git a/bin/addons/__init__.py b/bin/addons/__init__.py index 2a9b947f985..f400ad99990 100644 --- a/bin/addons/__init__.py +++ b/bin/addons/__init__.py @@ -161,6 +161,7 @@ def get_report_resource(resource, base=None): """Return the full path of the given report resource. >>> + >>> get_report_resource('hr/reports/timesheet.xsl') >>> get_report_resource('addons/hr/reports/timesheet.xsl') >>> get_report_resource('../../base/reports/rml_template.xsl', '/path/to/addons/hr/reports') >>> @@ -180,10 +181,13 @@ def get_report_resource(resource, base=None): assert os.path.exists(fname), 'File does not exist: %s' % fname - fname = os.path.join(os.path.dirname(ad), resource) + if resource.startswith('addons'): + resource = resource.replace('addons', '', 1) + + fname = os.path.join(ad, resource) if os.path.exists(fname): return fname - return os.path.join(os.path.dirname(_ad), resource) + return os.path.join(_ad, resource) def get_modules(): """Returns the list of module names diff --git a/bin/addons/base/ir/ir_actions.py b/bin/addons/base/ir/ir_actions.py index a4a7ae71d1c..6d9d41867bc 100644 --- a/bin/addons/base/ir/ir_actions.py +++ b/bin/addons/base/ir/ir_actions.py @@ -29,6 +29,7 @@ from osv import fields,osv import tools +import addons import time class actions(osv.osv): @@ -71,7 +72,7 @@ class report_xml(osv.osv): data = report[name + '_data'] if not data and report[name[:-8]]: try: - fp = tools.file_open(report[name[:-8]], mode='rb') + fp = tools.file_open(addons.get_report_resource(report[name[:-8]]), mode='rb') data = fp.read() except: data = False diff --git a/bin/report/interface.py b/bin/report/interface.py index 51c2ffdf23f..abd955ffca0 100644 --- a/bin/report/interface.py +++ b/bin/report/interface.py @@ -79,7 +79,7 @@ class report_rml(report_int): def __init__(self, name, table, tmpl, xsl): super(report_rml, self).__init__(name) self.table = table - self.tmpl = tmpl + self.tmpl = addons.get_report_resource(tmpl) self.xsl = xsl self.bin_datas = {} self.generators = { diff --git a/bin/report/report_sxw.py b/bin/report/report_sxw.py index 586527a13d0..8e5acba8470 100644 --- a/bin/report/report_sxw.py +++ b/bin/report/report_sxw.py @@ -35,6 +35,7 @@ import osv from interface import report_rml import re import tools +import addons import pooler import netsvc import warnings @@ -572,7 +573,7 @@ class report_sxw(report_rml): rml = report_xml.report_rml_content report_type = report_xml.report_type else: - rml = tools.file_open(self.tmpl, subdir=None).read() + rml = tools.file_open(addons.get_report_resource(self.tmpl), subdir=None).read() report_type= data.get('report_type', report_type) if report_type == 'sxw' and report_xml: @@ -625,7 +626,7 @@ class report_sxw(report_rml): if self.header: #Add corporate header/footer - rml = tools.file_open('custom/corporate_sxw_header.xml').read() + rml = tools.file_open(addons.get_report_resource('addons/custom/corporate_sxw_header.xml')).read() rml_parser = self.parser(cr, uid, self.name2, context) rml_parser.parents = sxw_parents rml_parser.tag = sxw_tag