[Erp5-report] r43752 gabriel - /erp5/trunk/utils/cloudooo/cloudooo/

nobody at svn.erp5.org nobody at svn.erp5.org
Fri Feb 25 15:45:41 CET 2011


Author: gabriel
Date: Fri Feb 25 15:45:41 2011
New Revision: 43752

URL: http://svn.erp5.org?rev=43752&view=rev
Log:
refactor to load handlers only once

Modified:
    erp5/trunk/utils/cloudooo/cloudooo/manager.py
    erp5/trunk/utils/cloudooo/cloudooo/paster_application.py

Modified: erp5/trunk/utils/cloudooo/cloudooo/manager.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/manager.py?rev=43752&r1=43751&r2=43752&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] Fri Feb 25 15:45:41 2011
@@ -47,16 +47,14 @@ def getHandlerObject(source_format, dest
   """Select handler according to source_format and destination_format"""
   source_mimetype = mimetypes.types_map.get('.%s' % source_format, "*")
   destination_mimetype = mimetypes.types_map.get('.%s' % destination_format, "*")
+  # XXX - Find one way to don't need use iteration to find the handler
   for pattern in mimetype_registry:
     registry_list = pattern.split()
     if fnmatch(source_mimetype, registry_list[0]) and \
         (fnmatch(destination_mimetype, registry_list[1]) or destination_format is None):
       handler_name = registry_list[2]
-      import_name = "cloudooo.handler.%s.handler" % handler_name
-      if import_name not in sys.modules:
-        __import__(import_name)
-      handler = sys.modules[import_name]
-      return getattr(handler, handler_dict[registry_list[2]])
+      handler = sys.modules[handler_name]
+      return getattr(handler, handler_dict[handler_name])
 
 
 class Manager(object):

Modified: erp5/trunk/utils/cloudooo/cloudooo/paster_application.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/paster_application.py?rev=43752&r1=43751&r2=43752&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/paster_application.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/paster_application.py [utf8] Fri Feb 25 15:45:41 2011
@@ -30,6 +30,7 @@ import gc
 from signal import signal, SIGINT, SIGQUIT, SIGHUP
 from os import path, mkdir
 import os
+import sys
 import cloudooo.handler.ooo.monitor as monitor
 from cloudooo.handler.ooo.application.openoffice import openoffice
 from cloudooo.wsgixmlrpcapplication import WSGIXMLRPCApplication
@@ -110,14 +111,19 @@ def application(global_config, **local_c
   mimemapper.loadFilterList(application_hostname,
                             openoffice_port, **kw)
   openoffice.release()
-  kw["mimetype_registry"] = filter(None,
-                            local_config.get("mimetype_registry",
-                                                 "").split("\n"))
+  mimetype_registry_str = local_config.get("mimetype_registry")
   kw["handler_dict"] = {}
   handler_mapping_list = local_config.get("handler_mapping", "").split("\n")
   for line in filter(None, handler_mapping_list):
-    key, value = line.strip().split()
-    kw["handler_dict"][key] = value
+    handler_name, object_name = line.strip().split()
+    import_name = "cloudooo.handler.%s.handler" % handler_name
+    mimetype_registry_str = mimetype_registry_str.replace(handler_name,
+                                                          import_name)
+    if import_name not in sys.modules:
+      __import__(import_name)
+    kw["handler_dict"][import_name] = object_name
+
+  kw["mimetype_registry"] = filter(None, mimetype_registry_str.split("\n"))
 
   kw["env"] = environment_dict
   from manager import Manager



More information about the Erp5-report mailing list