### Register Transforms ### This is interesting because we don't expect all transforms to be ### available on all platforms. To do this we allow things to fail at ### two levels ### 1) Imports ### If the import fails the module is removed from the list and ### will not be processed/registered ### 2) Registration ### A second phase happens when the loaded modules register method ### is called and this produces an instance that will used to ### implement the transform, if register needs to fail for now it ### should raise an ImportError as well (dumb, I know) from logging import DEBUG, ERROR from Products.PortalTransforms.utils import log from Products.PortalTransforms.libtransforms.utils import MissingBinary modules = ( 'html_to_odt', 'odt_to_doc', 'odt_to_pdf', ) g = globals() transforms = [] for m in modules: try: ns = __import__(m, g, g, None) transforms.append(ns.register()) except ImportError, e: msg = "Problem importing module %s : %s" % (m, e) log(msg, severity=ERROR) except MissingBinary, e: log(str(e), severity=DEBUG) except Exception, e: import traceback traceback.print_exc() log("Raised error %s for %s" % (e, m), severity=ERROR) def initialize(engine): for transform in transforms: engine.registerTransform(transform)