[FIX] report_webkit: now works under Windows

The following points correspond to the description JP Robiez gave in the bug report comments:
No quotes around the templates filenames
Use the subprocess module instead of the commands one
Open explicitely the resulting pdf in binary mode

lp bug: https://launchpad.net/bugs/704870 fixed

bzr revid: vmt@openerp.com-20110404163307-x5h0apqxwwc7gc5o
This commit is contained in:
Vo Minh Thu 2011-04-04 18:33:07 +02:00
parent d4dabd707c
commit b6aae10626
1 changed files with 13 additions and 12 deletions

View File

@ -30,6 +30,7 @@
##############################################################################
import commands
import subprocess
import os
import report
import tempfile
@ -109,7 +110,7 @@ class WebKitParser(report_sxw):
head_file.write(header)
head_file.close()
file_to_del.append(head_file.name)
command.append("--header-html '%s'"%(head_file.name))
command.extend(['--header-html', head_file.name])
if footer :
foot_file = file( os.path.join(
tmp_dir,
@ -120,20 +121,20 @@ class WebKitParser(report_sxw):
foot_file.write(footer)
foot_file.close()
file_to_del.append(foot_file.name)
command.append("--footer-html '%s'"%(foot_file.name))
command.extend(['--footer-html', foot_file.name])
if webkit_header.margin_top :
command.append('--margin-top %s'%(str(webkit_header.margin_top).replace(',', '.')))
command.extend(['--margin-top', str(webkit_header.margin_top).replace(',', '.')])
if webkit_header.margin_bottom :
command.append('--margin-bottom %s'%(str(webkit_header.margin_bottom).replace(',', '.')))
command.extend(['--margin-bottom', str(webkit_header.margin_bottom).replace(',', '.')])
if webkit_header.margin_left :
command.append('--margin-left %s'%(str(webkit_header.margin_left).replace(',', '.')))
command.extend(['--margin-left', str(webkit_header.margin_left).replace(',', '.')])
if webkit_header.margin_right :
command.append('--margin-right %s'%(str(webkit_header.margin_right).replace(',', '.')))
command.extend(['--margin-right', str(webkit_header.margin_right).replace(',', '.')])
if webkit_header.orientation :
command.append("--orientation '%s'"%(str(webkit_header.orientation).replace(',', '.')))
command.extend(['--orientation', str(webkit_header.orientation).replace(',', '.')])
if webkit_header.format :
command.append(" --page-size '%s'"%(str(webkit_header.format).replace(',', '.')))
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')
@ -145,17 +146,17 @@ class WebKitParser(report_sxw):
command.append(out)
generate_command = ' '.join(command)
try:
status = commands.getstatusoutput(generate_command)
if status[0] :
status = subprocess.call(command)
if status :
raise except_osv(
_('Webkit raise an error' ),
status[1]
status
)
except Exception:
for f_to_del in file_to_del :
os.unlink(f_to_del)
pdf = file(out).read()
pdf = file(out, 'rb').read()
for f_to_del in file_to_del :
os.unlink(f_to_del)