From 6e43e6c4e1cc8da4b2cd1f6919ea43c79295686c Mon Sep 17 00:00:00 2001 From: Vo Minh Thu Date: Mon, 25 Mar 2013 13:33:59 +0100 Subject: [PATCH] [FIX] reports: now that _register_all() has been removed, LocalService() must be modified to do the lookup in the database too. bzr revid: vmt@openerp.com-20130325123359-szxx6a0n06tha70p --- openerp/addons/base/ir/ir_actions.py | 11 +++++++++-- openerp/netsvc.py | 18 +++++++++++++++++- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/openerp/addons/base/ir/ir_actions.py b/openerp/addons/base/ir/ir_actions.py index 4b4ed6fe799..1d717048b3f 100644 --- a/openerp/addons/base/ir/ir_actions.py +++ b/openerp/addons/base/ir/ir_actions.py @@ -85,9 +85,9 @@ class report_xml(osv.osv): res[report.id] = False return res - def render_report(self, cr, uid, res_ids, name, data, context=None): + def _lookup_report(self, cr, name): """ - Look up a report definition and render the report for the provided IDs. + Look up a report definition. """ import openerp import operator @@ -119,6 +119,13 @@ class report_xml(osv.osv): else: raise Exception, "Required report does not exist: %s" % r + return new_report + + def render_report(self, cr, uid, res_ids, name, data, context=None): + """ + Look up a report definition and render the report for the provided IDs. + """ + new_report = self._lookup_report(cr, name) return new_report.create(cr, uid, res_ids, data, context) _name = 'ir.actions.report.xml' diff --git a/openerp/netsvc.py b/openerp/netsvc.py index 1e1cd887d1a..4ad2d24ddb2 100644 --- a/openerp/netsvc.py +++ b/openerp/netsvc.py @@ -44,13 +44,29 @@ import openerp _logger = logging.getLogger(__name__) def LocalService(name): + """ + The openerp.netsvc.LocalService() fucntion is deprecated. It still works + in two cases: workflows and reports. For workflows, instead of using + LocalService('workflow'), openerp.workflow should be used (better yet, + methods on openerp.osv.orm.Model should be used). For reports, + openerp.report.render_report() should be used (methods on the Model should + be provided too in the future). + """ _logger.warning("LocalService('%s') is deprecated." % name) if name == 'workflow': return openerp.workflow if name.startswith('report.'): - return openerp.report.interface.report_int._reports[name] + report = openerp.report.interface.report_int._reports.get(name) + if report: + return report + else: + dbname = getattr(threading.currentThread(), 'dbname', None) + if dbname: + registry = openerp.modules.registry.RegistryManager.get(dbname) + with registry.cursor() as cr: + return registry['ir.actions.report.xml']._lookup_report(cr, name[len('report.'):]) BLACK, RED, GREEN, YELLOW, BLUE, MAGENTA, CYAN, WHITE, _NOTHING, DEFAULT = range(10) #The background is set with 40 plus the number of the color, and the foreground with 30