From cc2ad1d42b7e139bb579b3def59a3f9433187873 Mon Sep 17 00:00:00 2001 From: "P.Christeas" <p_christ@hol.gr> Date: Mon, 18 Oct 2010 16:33:42 +0200 Subject: [PATCH] [FIX] report_webkit: avoid potential conflict with regular reports + bit of lint cleanup bzr revid: odo@openerp.com-20101018143342-3uexdknq7lw3ldox --- addons/report_webkit/ir_report.py | 68 +++++++++++++-------------- addons/report_webkit/webkit_report.py | 2 +- 2 files changed, 35 insertions(+), 35 deletions(-) diff --git a/addons/report_webkit/ir_report.py b/addons/report_webkit/ir_report.py index 831403412982..b3155b25430c 100644 --- a/addons/report_webkit/ir_report.py +++ b/addons/report_webkit/ir_report.py @@ -34,34 +34,34 @@ import netsvc from webkit_report import WebKitParser from report.report_sxw import rml_parse -def register_report(name, model, tmpl_path, parser): +def register_report(name, model, tmpl_path, parser=rml_parse): "Register the report into the services" name = 'report.%s' % name if netsvc.Service._services.get(name, False): + if hasattr(netsvc.Service._services[name], 'parser'): + parser = netsvc.Service._services[name].parser del netsvc.Service._services[name] WebKitParser(name, model, tmpl_path, parser=parser) class ReportXML(osv.osv): - + def __init__(self, pool, cr): super(ReportXML, self).__init__(pool, cr) - + def register_all(self,cursor): value = super(ReportXML, self).register_all(cursor) - cursor.execute("SELECT * FROM ir_act_report_xml") + cursor.execute("SELECT * FROM ir_act_report_xml WHERE report_type = 'webkit'") records = cursor.dictfetchall() for record in records: - if record['report_type'] == 'webkit': - parser=rml_parse - register_report(record['report_name'], record['model'], record['report_rml'], parser) + register_report(record['report_name'], record['model'], record['report_rml']) return value def unlink(self, cursor, user, ids, context=None): """Delete report and unregister it""" trans_obj = self.pool.get('ir.translation') trans_ids = trans_obj.search( - cursor, + cursor, user, [('type', '=', 'report'), ('res_id', 'in', ids)] ) @@ -72,9 +72,9 @@ class ReportXML(osv.osv): # report will fail so it's ok. res = super(ReportXML, self).unlink( - cursor, - user, - ids, + cursor, + user, + ids, context ) return res @@ -82,34 +82,34 @@ class ReportXML(osv.osv): def create(self, cursor, user, vals, context=None): "Create report and register it" res = super(ReportXML, self).create(cursor, user, vals, context) - parser=rml_parse - register_report( - vals['report_name'], - vals['model'], - vals.get('report_rml', False), - parser + if vals.get('report_type','') == 'webkit': + # I really look forward to virtual functions :S + register_report( + vals['report_name'], + vals['model'], + vals.get('report_rml', False) ) return res - def write(self, cursor, user, ids, vals, context=None): + def write(self, cr, uid, ids, vals, context=None): "Edit report and manage it registration" - parser=rml_parse - record = self.read(cursor, user, ids) - if isinstance(record, list) : - record = record[0] - if vals.get('report_name', False) and \ - vals['report_name']!=record['report_name']: - report_name = vals['report_name'] - else: - report_name = record['report_name'] + if isinstance(ids, (int, long)): + ids = [ids,] + for rep in self.browse(cr, uid, ids, context=context): + if rep.report_type != 'webkit': + continue + if vals.get('report_name', False) and \ + vals['report_name'] != rep.report_name: + report_name = vals['report_name'] + else: + report_name = rep.report_name - register_report( - report_name, - vals.get('model', record['model']), - vals.get('report_rml', record['report_rml']), - parser + register_report( + report_name, + vals.get('model', rep.model), + vals.get('report_rml', rep.report_rml) ) - res = super(ReportXML, self).write(cursor, user, ids, vals, context) + res = super(ReportXML, self).write(cr, uid, ids, vals, context) return res _name = 'ir.actions.report.xml' @@ -129,4 +129,4 @@ class ReportXML(osv.osv): 'report_webkit_data': fields.text('Webkit Template', help="This template will be used if the main report file is not found"), } -ReportXML() \ No newline at end of file +ReportXML() diff --git a/addons/report_webkit/webkit_report.py b/addons/report_webkit/webkit_report.py index 3e90b69dee1c..3dd768128fb7 100644 --- a/addons/report_webkit/webkit_report.py +++ b/addons/report_webkit/webkit_report.py @@ -205,7 +205,7 @@ class WebKitParser(report_sxw): def create_single_pdf(self, cursor, uid, ids, data, report_xml, context=None): """generate the PDF""" - if not context: + if context is None: context={} if report_xml.report_type != 'webkit': -- GitLab