mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[FIX] Cursor of browsed objects is already closed when fetching download filename
Fixes #30
This commit is contained in:
@@ -21,7 +21,6 @@
|
||||
import simplejson
|
||||
from openerp.addons.web import http
|
||||
from openerp.addons.web.controllers import main
|
||||
from openerp.addons.email_template import email_template
|
||||
|
||||
|
||||
class Reports(main.Reports):
|
||||
@@ -33,22 +32,9 @@ class Reports(main.Reports):
|
||||
context = dict(req.context)
|
||||
context.update(action["context"])
|
||||
report_xml = req.session.model('ir.actions.report.xml')
|
||||
report_ids = report_xml.search(
|
||||
[('report_name', '=', action['report_name'])],
|
||||
0, False, False, context)
|
||||
for report in report_xml.read(report_ids,
|
||||
fields=['download_filename']):
|
||||
if not report.get('download_filename'):
|
||||
continue
|
||||
objects = req.session.model(context['active_model'])\
|
||||
.browse(context['active_ids'])
|
||||
generated_filename = email_template.mako_template_env\
|
||||
.from_string(report['download_filename'])\
|
||||
.render({
|
||||
'objects': objects,
|
||||
'o': objects[0],
|
||||
'object': objects[0],
|
||||
})
|
||||
generated_filename = report_xml.generate_filename(
|
||||
action['report_name'], context)
|
||||
if generated_filename:
|
||||
result.headers['Content-Disposition'] = main.content_disposition(
|
||||
generated_filename, req)
|
||||
return result
|
||||
|
||||
@@ -19,6 +19,7 @@
|
||||
#
|
||||
##############################################################################
|
||||
from openerp.osv import fields, orm
|
||||
from openerp.addons.email_template.email_template import mako_template_env
|
||||
|
||||
|
||||
class IrActionsReportXml(orm.Model):
|
||||
@@ -35,3 +36,19 @@ class IrActionsReportXml(orm.Model):
|
||||
'a report being printed for multiple records or not. You also '
|
||||
'have access to `o`, which is the first record in the list')
|
||||
}
|
||||
|
||||
def generate_filename(self, cr, uid, report_name, context=None):
|
||||
report_ids = self.search(
|
||||
cr, uid, [('report_name', '=', report_name),
|
||||
('download_filename', '!=', False)],
|
||||
limit=1, context=context)
|
||||
for report in self.browse(cr, uid, report_ids, context=context):
|
||||
objects = self.pool[context['active_model']].browse(
|
||||
cr, uid, context['active_ids'], context=context)
|
||||
return mako_template_env.from_string(
|
||||
report.download_filename).render({
|
||||
'objects': objects,
|
||||
'o': objects[0],
|
||||
'object': objects[0],
|
||||
})
|
||||
return False
|
||||
|
||||
Reference in New Issue
Block a user