[FIX] report_webkit: backport of latest trunk webkit fixes, incl. bug 819334 / OPW...
authorOlivier Dony <odo@openerp.com>
Thu, 19 Jan 2012 16:47:51 +0000 (17:47 +0100)
committerOlivier Dony <odo@openerp.com>
Thu, 19 Jan 2012 16:47:51 +0000 (17:47 +0100)
lp bug: https://launchpad.net/bugs/819334 fixed

bzr revid: odo@openerp.com-20120119164751-q3dp1ev26j43cfyc

addons/report_webkit/webkit_report.py

index 830a30f..2e03374 100644 (file)
@@ -55,17 +55,15 @@ def mako_template(text):
     # default_filters=['unicode', 'h'] can be used to set global filters
     return Template(text, input_encoding='utf-8', output_encoding='utf-8')
 
-
 class WebKitParser(report_sxw):
     """Custom class that use webkit to render HTML reports
        Code partially taken from report openoffice. Thanks guys :)
     """
-    
-    def __init__(self, name, table, rml=False, parser=False, 
+    def __init__(self, name, table, rml=False, parser=False,
         header=True, store=False):
         self.parser_instance = False
         self.localcontext={}
-        report_sxw.__init__(self, name, table, rml, parser, 
+        report_sxw.__init__(self, name, table, rml, parser,
             header, store)
 
     def get_lib(self, cursor, uid, company) :
@@ -102,8 +100,7 @@ class WebKitParser(report_sxw):
         if not webkit_header:
             webkit_header = report_xml.webkit_header
         tmp_dir = tempfile.gettempdir()
-        out = report_xml.name+str(time.time())+'.pdf'
-        out = os.path.join(tmp_dir, out.replace(' ',''))
+        out_filename = tempfile.mktemp(suffix=".pdf", prefix="webkit.tmp.")
         files = []
         file_to_del = []
         if comm_path:
@@ -157,8 +154,7 @@ class WebKitParser(report_sxw):
             html_file.close()
             file_to_del.append(html_file.name)
             command.append(html_file.name)
-        command.append(out)
-        generate_command = ' '.join(command)
+        command.append(out_filename)
         try:
             status = subprocess.call(command, stderr=subprocess.PIPE) # ignore stderr
             if status :
@@ -170,11 +166,11 @@ class WebKitParser(report_sxw):
             for f_to_del in file_to_del :
                 os.unlink(f_to_del)
 
-        pdf = file(out, 'rb').read()
+        pdf = file(out_filename, 'rb').read()
         for f_to_del in file_to_del :
             os.unlink(f_to_del)
 
-        os.unlink(out)
+        os.unlink(out_filename)
         return pdf
     
     
@@ -186,7 +182,7 @@ class WebKitParser(report_sxw):
     def translate_call(self, src):
         """Translate String."""
         ir_translation = self.pool.get('ir.translation')
-        res = ir_translation._get_source(self.parser_instance.cr, self.parser_instance.uid, self.name, 'report', self.localcontext.get('lang', 'en_US'), src)
+        res = ir_translation._get_source(self.parser_instance.cr, self.parser_instance.uid, None, 'report', self.localcontext.get('lang', 'en_US'), src)
         if not res :
             return src
         return res