[IMP] report: use openerp.report.render_report() instead of LocalService().create().

bzr revid: vmt@openerp.com-20130222124823-6u7cqzj3d60buud5
This commit is contained in:
Vo Minh Thu 2013-02-22 13:48:23 +01:00
parent eb5fa511ec
commit 76ec85fca1
5 changed files with 11 additions and 16 deletions

View File

@ -29,7 +29,6 @@ import urllib2
import openerp import openerp
import openerp.release as release import openerp.release as release
import openerp.netsvc as netsvc
from openerp.osv import osv, fields from openerp.osv import osv, fields
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval as eval from openerp.tools.safe_eval import safe_eval as eval
@ -418,9 +417,7 @@ class EDIMixin(object):
('usage','=','default')]) ('usage','=','default')])
if matching_reports: if matching_reports:
report = ir_actions_report.browse(cr, uid, matching_reports[0]) report = ir_actions_report.browse(cr, uid, matching_reports[0])
report_service = 'report.' + report.report_name result, format = openerp.report.render_report(cr, uid, [record.id], report.report_name, {'model': self._name}, context=context)
service = netsvc.LocalService(report_service)
(result, format) = service.create(cr, uid, [record.id], {'model': self._name}, context=context)
eval_context = {'time': time, 'object': record} eval_context = {'time': time, 'object': record}
if not report.attachment or not eval(report.attachment, eval_context): if not report.attachment or not eval(report.attachment, eval_context):
# no auto-saving of report as attachment, need to do it manually # no auto-saving of report as attachment, need to do it manually

View File

@ -23,7 +23,7 @@
import base64 import base64
import logging import logging
from openerp import netsvc import openerp
from openerp.osv import osv, fields from openerp.osv import osv, fields
from openerp.osv import fields from openerp.osv import fields
from openerp import tools from openerp import tools
@ -331,16 +331,15 @@ class email_template(osv.osv):
# Add report in attachments # Add report in attachments
if template.report_template: if template.report_template:
report_name = self.render_template(cr, uid, template.report_name, template.model, res_id, context=context) report_name = self.render_template(cr, uid, template.report_name, template.model, res_id, context=context)
report_service = 'report.' + report_xml_pool.browse(cr, uid, template.report_template.id, context).report_name report_service = report_xml_pool.browse(cr, uid, template.report_template.id, context).report_name
# Ensure report is rendered using template's language # Ensure report is rendered using template's language
ctx = context.copy() ctx = context.copy()
if template.lang: if template.lang:
ctx['lang'] = self.render_template(cr, uid, template.lang, template.model, res_id, context) ctx['lang'] = self.render_template(cr, uid, template.lang, template.model, res_id, context)
service = netsvc.LocalService(report_service) result, format = openerp.report.render_report(cr, uid, [res_id], report_service, {'model': template.model}, ctx)
(result, format) = service.create(cr, uid, [res_id], {'model': template.model}, ctx)
result = base64.b64encode(result) result = base64.b64encode(result)
if not report_name: if not report_name:
report_name = report_service report_name = 'report.' + report_service
ext = "." + format ext = "." + format
if not report_name.endswith(ext): if not report_name.endswith(ext):
report_name += ext report_name += ext

View File

@ -32,7 +32,6 @@ import re
from openerp.addons.decimal_precision import decimal_precision as dp from openerp.addons.decimal_precision import decimal_precision as dp
from openerp.osv import fields, osv from openerp.osv import fields, osv
from openerp import netsvc
from openerp.tools.translate import _ from openerp.tools.translate import _
_intervalTypes = { _intervalTypes = {

View File

@ -25,8 +25,9 @@ from lxml import etree
import os import os
from time import strftime from time import strftime
from openerp import addons, netsvc, tools from openerp import addons, tools
from openerp.osv import fields, osv from openerp.osv import fields, osv
import openerp.report
from openerp.tools import to_xml from openerp.tools import to_xml
from openerp.tools.translate import _ from openerp.tools.translate import _
from openerp.tools.safe_eval import safe_eval from openerp.tools.safe_eval import safe_eval
@ -463,8 +464,7 @@ class survey_question_wiz(osv.osv_memory):
return (False, Exception('Report name and Resources ids are required !!!')) return (False, Exception('Report name and Resources ids are required !!!'))
try: try:
uid = 1 uid = 1
service = netsvc.LocalService(report_name); result, format = openerp.report.render_report(cr, uid, res_ids, report_name[len('report.'):], {}, context)
(result, format) = service.create(cr, uid, res_ids, {}, context)
ret_file_name = addons.get_module_resource('survey', 'report') + file_name + '.pdf' ret_file_name = addons.get_module_resource('survey', 'report') + file_name + '.pdf'
fp = open(ret_file_name, 'wb+'); fp = open(ret_file_name, 'wb+');
fp.write(result); fp.write(result);

View File

@ -26,8 +26,9 @@ import os
import datetime import datetime
import socket import socket
from openerp import addons, netsvc, tools from openerp import addons, tools
from openerp.osv import fields, osv from openerp.osv import fields, osv
import openerp.report
from openerp.tools.translate import _ from openerp.tools.translate import _
@ -85,8 +86,7 @@ Thanks,''') % (name, self.pool.get('ir.config_parameter').get_param(cr, uid, 'we
return (False, Exception('Report name and Resources ids are required !!!')) return (False, Exception('Report name and Resources ids are required !!!'))
try: try:
ret_file_name = addons.get_module_resource('survey', 'report') + file_name + '.pdf' ret_file_name = addons.get_module_resource('survey', 'report') + file_name + '.pdf'
service = netsvc.LocalService(report_name); result, format = openerp.report.render_report(cr, uid, res_ids, report_name[len('report.'):], {}, {})
(result, format) = service.create(cr, uid, res_ids, {}, {})
fp = open(ret_file_name, 'wb+'); fp = open(ret_file_name, 'wb+');
fp.write(result); fp.write(result);
fp.close(); fp.close();