mirror of
https://github.com/OCA/reporting-engine.git
synced 2025-02-16 16:30:38 +02:00
[BACK] backport module to 7 version
This commit is contained in:
@@ -19,35 +19,35 @@
|
|||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
import simplejson
|
import simplejson
|
||||||
from openerp import http
|
from openerp.addons.web import http
|
||||||
from openerp.addons.web.controllers import main
|
from openerp.addons.web.controllers import main
|
||||||
from openerp.addons.email_template import email_template
|
from openerp.addons.email_template import email_template
|
||||||
|
|
||||||
|
|
||||||
class Reports(main.Reports):
|
class Reports(main.Reports):
|
||||||
@http.route('/web/report', type='http', auth="user")
|
|
||||||
@main.serialize_exception
|
@http.httprequest
|
||||||
def index(self, action, token):
|
def index(self, req, action, token):
|
||||||
result = super(Reports, self).index(action, token)
|
result = super(Reports, self).index(req, action, token)
|
||||||
action = simplejson.loads(action)
|
action = simplejson.loads(action)
|
||||||
context = dict(http.request.context)
|
context = dict(req.context)
|
||||||
context.update(action["context"])
|
context.update(action["context"])
|
||||||
report_xml = http.request.session.model('ir.actions.report.xml')
|
report_xml = req.session.model('ir.actions.report.xml')
|
||||||
report_ids = report_xml.search(
|
report_ids = report_xml.search(
|
||||||
[('report_name', '=', action['report_name'])],
|
[('report_name', '=', action['report_name'])],
|
||||||
0, False, False, context)
|
0, False, False, context)
|
||||||
for report in report_xml.browse(report_ids):
|
for report in report_xml.read(report_ids, fields=['download_filename']):
|
||||||
if not report.download_filename:
|
if not report['download_filename']:
|
||||||
continue
|
continue
|
||||||
objects = http.request.session.model(context['active_model'])\
|
objects = req.session.model(context['active_model'])\
|
||||||
.browse(context['active_ids'])
|
.browse(context['active_ids'])
|
||||||
generated_filename = email_template.mako_template_env\
|
generated_filename = email_template.mako_template_env\
|
||||||
.from_string(report.download_filename)\
|
.from_string(report['download_filename'])\
|
||||||
.render({
|
.render({
|
||||||
'objects': objects,
|
'objects': objects,
|
||||||
'o': objects[0],
|
'o': objects[0],
|
||||||
'object': objects[0],
|
'object': objects[0],
|
||||||
})
|
})
|
||||||
result.headers['Content-Disposition'] = main.content_disposition(
|
result.headers['Content-Disposition'] = main.content_disposition(
|
||||||
generated_filename)
|
generated_filename, req)
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -18,18 +18,20 @@
|
|||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
#
|
#
|
||||||
##############################################################################
|
##############################################################################
|
||||||
from openerp import models, fields
|
from openerp.osv import fields, orm
|
||||||
|
|
||||||
|
|
||||||
class IrActionsReportXml(models.Model):
|
class IrActionsReportXml(orm.Model):
|
||||||
_inherit = 'ir.actions.report.xml'
|
_inherit = 'ir.actions.report.xml'
|
||||||
|
|
||||||
download_filename = fields.Char(
|
_columns = {
|
||||||
'Download filename',
|
'download_filename': fields.char(
|
||||||
help='Fill in this field to have a custom file name when downloading '
|
'Download filename',
|
||||||
'this report. This string is evaluated as a jinja2 expression.\n'
|
help='Fill in this field to have a custom file name when '
|
||||||
'You can use python expressions, `objects` is a browse record list of '
|
'downloading this report. This string is evaluated as a jinja2 '
|
||||||
'the objects for which the report is being generated.\n'
|
'expression.\nYou can use python expressions, `objects` is a '
|
||||||
'Check for this list\'s length to determine if it is a report being '
|
'browse record list of the objects for which the report is being '
|
||||||
'printed for multiple records or not. You also have access to `o`, '
|
'generated.\nCheck for this list\'s length to determine if it is '
|
||||||
'which is the first record in the list')
|
'a report being printed for multiple records or not. You also '
|
||||||
|
'have access to `o`, which is the first record in the list')
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user