Merge pull request #43 from StefanRijnhart/7.0-report_custom_filename_closed_cursor

[FIX] Cursor of browsed objects is already closed when fetching downl…
This commit is contained in:
Pedro M. Baeza
2016-03-24 23:27:33 +01:00
3 changed files with 22 additions and 19 deletions

View File

@@ -94,8 +94,8 @@ class ReportAssembleXML(orm.Model):
for rep in self.browse(cr, uid, ids, context=context):
if rep.report_type != 'assemblage':
continue
if (vals.get('report_name', False)
and vals['report_name'] != rep.report_name):
if (vals.get('report_name', False) and
vals['report_name'] != rep.report_name):
report_name = vals['report_name']
else:
report_name = rep.report_name

View File

@@ -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

View File

@@ -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