From 80f0a50e03d9a4e80c8374193c37ba9ba8b77141 Mon Sep 17 00:00:00 2001 From: ced <> Date: Thu, 15 Mar 2007 12:26:40 +0000 Subject: [PATCH] KERNEL: fix print workflow on win32 bzr revid: ced-281965613dcbae881fe25f41fcd5dc0f783e7fa7 --- bin/addons/base/ir/workflow/print_instance.py | 11 +++++++++-- bin/service/web_services.py | 3 ++- bin/tools/misc.py | 17 +++++++++++++++-- 3 files changed, 26 insertions(+), 5 deletions(-) diff --git a/bin/addons/base/ir/workflow/print_instance.py b/bin/addons/base/ir/workflow/print_instance.py index 45038c965cd..fad5d67c0ab 100644 --- a/bin/addons/base/ir/workflow/print_instance.py +++ b/bin/addons/base/ir/workflow/print_instance.py @@ -143,8 +143,15 @@ class report_graph_instance(object): 1.5 inch 15 inch moveto (No workflow available) show showpage''' - args = ('ps2pdf', '-sPAPERSIZE=a4', '-', '-') - input, output = tools.exec_pg_command_pipe(*args) + if os.name == "nt": + prog = "ps2pdf.bat" + else: + prog = "ps2pdffoo" + args = (prog, '-sPAPERSIZE=a4', '-', '-') + try: + input, output = tools.exec_command_pipe(*args) + except: + return input.write(ps_string) input.close() self.result = output.read() diff --git a/bin/service/web_services.py b/bin/service/web_services.py index c248f53fece..52bf154e822 100644 --- a/bin/service/web_services.py +++ b/bin/service/web_services.py @@ -431,7 +431,8 @@ class report_spool(netsvc.Service): res2 = result['result'].encode('latin1', 'replace') else: res2 = result['result'] - res['result'] = base64.encodestring(res2) + if res2: + res['result'] = base64.encodestring(res2) res['format'] = result['format'] del self._reports[report_id] return res diff --git a/bin/tools/misc.py b/bin/tools/misc.py index 0874dadfb0d..d6e89b09d36 100644 --- a/bin/tools/misc.py +++ b/bin/tools/misc.py @@ -104,7 +104,11 @@ def init_db(cr): cr.commit() def find_in_path(name): - path = [dir for dir in os.environ['PATH'].split(':') + if os.name == "nt": + sep = ';' + else: + sep = ':' + path = [dir for dir in os.environ['PATH'].split(sep) if os.path.isdir(dir)] for dir in path: if name in os.listdir(dir): @@ -121,7 +125,6 @@ def exec_pg_command(name, *args): prog = find_pg_tool(name) args2 = (os.path.basename(prog),) + args return os.spawnv(os.P_WAIT, prog, args2) -# os.spawnv(os.P_WAIT, prog, ([os.path.basename(prog)] + args)) def exec_pg_command_pipe(name, *args): prog = find_pg_tool(name) @@ -131,6 +134,16 @@ def exec_pg_command_pipe(name, *args): cmd = prog + ' ' + ' '.join(args) return os.popen2(cmd, 'b') +def exec_command_pipe(name, *args): + prog = find_in_path(name) + if not prog: + raise + if os.name == "nt": + cmd = '"'+prog+'" '+' '.join(args) + else: + cmd = prog+' '+' '.join(args) + return os.popen2(cmd, 'b') + #---------------------------------------------------------- # File paths #----------------------------------------------------------