utils.py
changeset 4961 03e083faefbf
parent 4903 627fcd90e08f
parent 4952 f32dcf3925d4
child 5069 135c5d7b89d0
equal deleted inserted replaced
4960:26b2468a1e73 4961:03e083faefbf
     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 from uuid import uuid4
    15 from uuid import uuid4
   269                                                  self.htmltag,
   270                                                  self.htmltag,
   270                                                  self.head.getvalue(),
   271                                                  self.head.getvalue(),
   271                                                  self.body.getvalue())
   272                                                  self.body.getvalue())
   272 
   273 
   273 
   274 
   274 def can_do_pdf_conversion(__answer=[None]):
   275 def _pdf_conversion_availability():
   275     """pdf conversion depends on
       
   276     * pysixt (python package)
       
   277     * fop 0.9x
       
   278     """
       
   279     if __answer[0] is not None:
       
   280         return __answer[0]
       
   281     try:
   276     try:
   282         import pysixt
   277         import pysixt
   283     except ImportError:
   278     except ImportError:
   284         __answer[0] = False
       
   285         return False
   279         return False
   286     from subprocess import Popen, STDOUT
   280     from subprocess import Popen, STDOUT
   287     import os
   281     if not os.path.isfile('/usr/bin/fop'):
       
   282         return False
   288     try:
   283     try:
   289         Popen(['/usr/bin/fop', '-q'],
   284         Popen(['/usr/bin/fop', '-q'],
   290               stdout=open(os.devnull, 'w'),
   285               stdout=open(os.devnull, 'w'),
   291               stderr=STDOUT)
   286               stderr=STDOUT)
   292     except OSError, e:
   287     except OSError, e:
   293         print e
   288         getLogger('cubicweb').info('fop not usable (%s)', e)
   294         __answer[0] = False
       
   295         return False
   289         return False
   296     __answer[0] = True
       
   297     return True
   290     return True
   298 
   291 
       
   292 def can_do_pdf_conversion(__answer_cache=[]):
       
   293     """pdf conversion depends on
       
   294     * pysixt (python package)
       
   295     * fop 0.9x
       
   296 
       
   297     NOTE: actual check is done by _pdf_conversion_availability and
       
   298     result is cached
       
   299     """
       
   300     if not __answer_cache: # first time, not in cache
       
   301         __answer_cache.append(_pdf_conversion_availability())
       
   302     return __answer_cache[0]
   299 
   303 
   300 try:
   304 try:
   301     # may not be there if cubicweb-web not installed
   305     # may not be there if cubicweb-web not installed
   302     from simplejson import dumps, JSONEncoder
   306     from simplejson import dumps, JSONEncoder
   303 except ImportError:
   307 except ImportError: