[IMP] qweb-pdf reports are now downloaded instead of being openned in a popup. It is done by using the 'session.get_file' of the webclient.
bzr revid: sle@openerp.com-20140218125322-yym87kc2c0guhgg2
This commit is contained in:
parent
ed9061893a
commit
3c6c3d91d5
|
@ -30,6 +30,7 @@ import logging
|
||||||
import tempfile
|
import tempfile
|
||||||
import lxml.html
|
import lxml.html
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import simplejson
|
||||||
|
|
||||||
from pyPdf import PdfFileWriter, PdfFileReader
|
from pyPdf import PdfFileWriter, PdfFileReader
|
||||||
from werkzeug.test import Client
|
from werkzeug.test import Client
|
||||||
|
@ -209,7 +210,7 @@ class Report(http.Controller):
|
||||||
"""Resolve an internal webpage url and return its content with the help of
|
"""Resolve an internal webpage url and return its content with the help of
|
||||||
werkzeug.test.client.
|
werkzeug.test.client.
|
||||||
|
|
||||||
:param url: string representinf the url to resolve
|
:param url: string representing the url to resolve
|
||||||
:param post: a dict representing the query string
|
:param post: a dict representing the query string
|
||||||
:returns: a tuple str(html), int(statuscode)
|
:returns: a tuple str(html), int(statuscode)
|
||||||
"""
|
"""
|
||||||
|
@ -427,3 +428,18 @@ class Report(http.Controller):
|
||||||
content = merged.read()
|
content = merged.read()
|
||||||
merged.close()
|
merged.close()
|
||||||
return content
|
return content
|
||||||
|
|
||||||
|
@http.route('/report/downloadpdf/', type='http', auth="user")
|
||||||
|
def report_pdf_attachment(self, data, token):
|
||||||
|
"""This function is only used by 'qwebactionmanager.js' in order to trigger the download of
|
||||||
|
a pdf report.
|
||||||
|
|
||||||
|
:param data: The JSON.stringified report internal url
|
||||||
|
:returns: Response with a filetoken cookie and an attachment header
|
||||||
|
"""
|
||||||
|
url = simplejson.loads(data)
|
||||||
|
pdf = self._get_url_content(url)
|
||||||
|
response = self._make_pdf_response(pdf)
|
||||||
|
response.set_cookie('fileToken', token)
|
||||||
|
response.headers.add('Content-Disposition', 'attachment; filename=report.pdf;')
|
||||||
|
return response
|
||||||
|
|
|
@ -37,10 +37,22 @@ openerp.report = function(instance) {
|
||||||
});
|
});
|
||||||
report_url += "?" + $.param(action.datas.form);
|
report_url += "?" + $.param(action.datas.form);
|
||||||
}
|
}
|
||||||
|
if (action.report_type == 'qweb-html') {
|
||||||
instance.web.unblockUI();
|
// Open the html report in a popup
|
||||||
window.open(report_url);
|
window.open(report_url);
|
||||||
return;
|
instance.web.unblockUI();
|
||||||
|
return;
|
||||||
|
} else {
|
||||||
|
// Trigger the download of the pdf report
|
||||||
|
var c = openerp.webclient.crashmanager;
|
||||||
|
this.session.get_file({
|
||||||
|
url: '/report/downloadpdf',
|
||||||
|
data: {data: JSON.stringify(report_url)},
|
||||||
|
complete: openerp.web.unblockUI,
|
||||||
|
error: c.rpc_error.bind(c)
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
return self._super(action, options);
|
return self._super(action, options);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue