utils.py
branchstable
changeset 4952 f32dcf3925d4
parent 4860 cedb6afdb7da
child 4961 03e083faefbf
equal deleted inserted replaced
4950:bca0873c0d6e 4952:f32dcf3925d4
     5 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
     5 :contact: http://www.logilab.fr/ -- mailto:contact@logilab.fr
     6 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     6 :license: GNU Lesser General Public License, v2.1 - http://www.gnu.org/licenses
     7 """
     7 """
     8 __docformat__ = "restructuredtext en"
     8 __docformat__ = "restructuredtext en"
     9 
     9 
       
    10 import os
    10 import sys
    11 import sys
    11 import decimal
    12 import decimal
    12 import datetime
    13 import datetime
    13 import random
    14 import random
    14 
    15 
   283                                                  self.htmltag,
   284                                                  self.htmltag,
   284                                                  self.head.getvalue(),
   285                                                  self.head.getvalue(),
   285                                                  self.body.getvalue())
   286                                                  self.body.getvalue())
   286 
   287 
   287 
   288 
   288 def can_do_pdf_conversion(__answer=[None]):
   289 def _pdf_conversion_availability():
   289     """pdf conversion depends on
       
   290     * pysixt (python package)
       
   291     * fop 0.9x
       
   292     """
       
   293     if __answer[0] is not None:
       
   294         return __answer[0]
       
   295     try:
   290     try:
   296         import pysixt
   291         import pysixt
   297     except ImportError:
   292     except ImportError:
   298         __answer[0] = False
       
   299         return False
   293         return False
   300     from subprocess import Popen, STDOUT
   294     from subprocess import Popen, STDOUT
   301     import os
   295     if not os.path.isfile('/usr/bin/fop'):
       
   296         return False
   302     try:
   297     try:
   303         Popen(['/usr/bin/fop', '-q'],
   298         Popen(['/usr/bin/fop', '-q'],
   304               stdout=open(os.devnull, 'w'),
   299               stdout=open(os.devnull, 'w'),
   305               stderr=STDOUT)
   300               stderr=STDOUT)
   306     except OSError, e:
   301     except OSError, e:
   307         print e
   302         getLogger('cubicweb').info('fop not usable (%s)', e)
   308         __answer[0] = False
       
   309         return False
   303         return False
   310     __answer[0] = True
       
   311     return True
   304     return True
       
   305 
       
   306 def can_do_pdf_conversion(__answer_cache=[]):
       
   307     """pdf conversion depends on
       
   308     * pysixt (python package)
       
   309     * fop 0.9x
       
   310 
       
   311     NOTE: actual check is done by _pdf_conversion_availability and
       
   312     result is cached
       
   313     """
       
   314     if not __answer_cache: # first time, not in cache
       
   315         __answer_cache.append(_pdf_conversion_availability())
       
   316     return __answer_cache[0]
   312 
   317 
   313 try:
   318 try:
   314     # may not be there if cubicweb-web not installed
   319     # may not be there if cubicweb-web not installed
   315     from simplejson import dumps, JSONEncoder
   320     from simplejson import dumps, JSONEncoder
   316 except ImportError:
   321 except ImportError: