import tempfile
import time
import logging
-import sys
from mako.template import Template
from mako.lookup import TemplateLookup
report_sxw.__init__(self, name, table, rml, parser,
header, store)
- def get_lib(self, cursor, uid):
+ def get_lib(self, cursor, uid, company) :
"""Return the lib wkhtml path"""
-
- proxy = self.pool.get('ir.config_parameter')
- webkit_path = proxy.get_param(cursor, uid, 'webkit_path')
-
- if not webkit_path:
- try:
- defpath = os.environ.get('PATH', os.defpath).split(os.pathsep)
- if hasattr(sys, 'frozen'):
- defpath.append(os.getcwd())
- webkit_path = tools.which('wkhtmltopdf', path=os.pathsep.join(defpath))
- except IOError:
- webkit_path = None
-
- if webkit_path:
- return webkit_path
-
- raise except_osv(
- _('Wkhtmltopdf library path is not set'),
- _('Please install executable on your system' \
- ' (sudo apt-get install wkhtmltopdf) or download it from here:' \
- ' http://code.google.com/p/wkhtmltopdf/downloads/list and set the' \
- ' path in the ir.config_parameter with the webkit_path key.' \
- 'Minimal version is 0.9.9')
- )
-
+ #TODO Detect lib in system first
+ path = self.pool.get('res.company').read(cursor, uid, company, ['lib_path',])
+ path = path['lib_path']
+ if not path:
+ raise except_osv(
+ _('Wkhtmltopdf library path is not set in company'),
+ _('Please install executable on your system'+
+ ' (sudo apt-get install wkhtmltopdf) or download it from here:'+
+ ' http://code.google.com/p/wkhtmltopdf/downloads/list and set the'+
+ ' path to the executable on the Company form.'+
+ 'Minimal version is 0.9.9')
+ )
+ if os.path.isabs(path) :
+ if (os.path.exists(path) and os.access(path, os.X_OK)\
+ and os.path.basename(path).startswith('wkhtmltopdf')):
+ return path
+ else:
+ raise except_osv(
+ _('Wrong Wkhtmltopdf path set in company'+
+ 'Given path is not executable or path is wrong'),
+ 'for path %s'%(path)
+ )
+ else :
+ raise except_osv(
+ _('path to Wkhtmltopdf is not absolute'),
+ 'for path %s'%(path)
+ )
def generate_pdf(self, comm_path, report_xml, header, footer, html_list, webkit_header=False):
"""Call webkit in order to generate pdf"""
if not webkit_header:
logger.error(msg)
raise except_osv(_('Webkit render'), msg)
return (deb, 'html')
- webkit_bin = self.get_lib(cursor, uid)
- pdf = self.generate_pdf(webkit_bin, report_xml, head, foot, htmls)
+ bin = self.get_lib(cursor, uid, company.id)
+ pdf = self.generate_pdf(bin, report_xml, head, foot, htmls)
return (pdf, 'pdf')