openerp-community-reviewer team mailing list archive
-
openerp-community-reviewer team
-
Mailing list archive
-
Message #06723
[Merge] lp:~camptocamp/ocb-addons/7.0-fix-1319095 into lp:ocb-addons
Yannick Vaucher @ Camptocamp has proposed merging lp:~camptocamp/ocb-addons/7.0-fix-1319095 into lp:ocb-addons.
Requested reviews:
OpenERP Community Backports (ocb)
Related bugs:
Bug #1290820 in OpenERP Community Backports (Addons): "report_webkit not thread-safe: risk of document corruption"
https://bugs.launchpad.net/ocb-addons/+bug/1290820
Bug #1319095 in OpenERP Community Backports (Addons): "report_webkit - temp file name can overlap"
https://bugs.launchpad.net/ocb-addons/+bug/1319095
For more details, see:
https://code.launchpad.net/~camptocamp/ocb-addons/7.0-fix-1319095/+merge/219476
--
https://code.launchpad.net/~camptocamp/ocb-addons/7.0-fix-1319095/+merge/219476
Your team OpenERP Community Backports is requested to review the proposed merge of lp:~camptocamp/ocb-addons/7.0-fix-1319095 into lp:ocb-addons.
=== modified file 'report_webkit/webkit_report.py'
--- report_webkit/webkit_report.py 2014-04-16 07:43:09 +0000
+++ report_webkit/webkit_report.py 2014-05-14 08:51:27 +0000
@@ -105,9 +105,10 @@
"""Call webkit in order to generate pdf"""
if not webkit_header:
webkit_header = report_xml.webkit_header
- tmp_dir = tempfile.gettempdir()
- out_filename = tempfile.mktemp(suffix=".pdf", prefix="webkit.tmp.")
- file_to_del = [out_filename]
+ out_filename = tempfile.NamedTemporaryFile(suffix=".pdf",
+ prefix="webkit.tmp.",
+ delete=False)
+ file_to_del = [out_filename.name]
if comm_path:
command = [comm_path]
else:
@@ -117,25 +118,15 @@
# default to UTF-8 encoding. Use <meta charset="latin-1"> to override.
command.extend(['--encoding', 'utf-8'])
if header :
- head_file = file( os.path.join(
- tmp_dir,
- str(time.time()) + '.head.html'
- ),
- 'w'
- )
- head_file.write(self._sanitize_html(header))
- head_file.close()
+ with tempfile.NamedTemporaryFile(suffix=".head.html",
+ delete=False) as head_file:
+ head_file.write(self._sanitize_html(header))
file_to_del.append(head_file.name)
command.extend(['--header-html', head_file.name])
if footer :
- foot_file = file( os.path.join(
- tmp_dir,
- str(time.time()) + '.foot.html'
- ),
- 'w'
- )
- foot_file.write(self._sanitize_html(footer))
- foot_file.close()
+ with tempfile.NamedTemporaryFile(suffix=".foot.html",
+ delete=False) as foot_file:
+ foot_file.write(self._sanitize_html(footer))
file_to_del.append(foot_file.name)
command.extend(['--footer-html', foot_file.name])
@@ -153,13 +144,13 @@
command.extend(['--page-size', str(webkit_header.format).replace(',', '.')])
count = 0
for html in html_list :
- html_file = file(os.path.join(tmp_dir, str(time.time()) + str(count) +'.body.html'), 'w')
- count += 1
- html_file.write(self._sanitize_html(html))
- html_file.close()
+ with tempfile.NamedTemporaryFile(suffix="%d.body.html" %count,
+ delete=False) as html_file:
+ count += 1
+ html_file.write(self._sanitize_html(html))
file_to_del.append(html_file.name)
command.append(html_file.name)
- command.append(out_filename)
+ command.append(out_filename.name)
stderr_fd, stderr_path = tempfile.mkstemp(text=True)
file_to_del.append(stderr_path)
try:
@@ -176,9 +167,8 @@
if status :
raise except_osv(_('Webkit error' ),
_("The command 'wkhtmltopdf' failed with error code = %s. Message: %s") % (status, error_message))
- pdf_file = open(out_filename, 'rb')
- pdf = pdf_file.read()
- pdf_file.close()
+ with out_filename as pdf_file:
+ pdf = pdf_file.read()
finally:
if stderr_fd is not None:
os.close(stderr_fd)
Follow ups