[Erp5-report] r43738 gabriel - /erp5/trunk/utils/cloudooo/cloudooo/
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Feb 25 13:55:01 CET 2011
Author: gabriel
Date: Fri Feb 25 13:55:00 2011
New Revision: 43738
URL: http://svn.erp5.org?rev=43738&view=rev
Log:
refactor code to load the handler list defined on cloudooo.conf. Later, if one handler is not defined, this handler is not enable on cloudooo
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=43738&r1=43737&r2=43738&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] Fri Feb 25 13:55:00 2011
@@ -44,7 +44,8 @@ from cloudooo.interfaces.handler import
from types import TypeType
-def getHandlerObject(source_format, destination_format, mimetype_registry):
+def getHandlerObject(source_format, destination_format,
+ mimetype_registry, handler_dict):
"""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, "*")
@@ -52,17 +53,12 @@ def getHandlerObject(source_format, dest
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 = "cloudooo.handler.%s.handler" % registry_list[2]
- __import__(handler_name)
- handler = sys.modules[handler_name]
- # XXX - Ugly and slow way to find the Handler Object
- for name in iter(dir(handler)):
- if not name.endswith("Handler"):
- continue
- obj = getattr(handler, name)
- if type(obj) == TypeType and IHandler.implementedBy(obj):
- return obj
- raise ValueError("No Handler Enabled for this conversion")
+ 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]])
class Manager(object):
@@ -75,6 +71,7 @@ class Manager(object):
self._path_tmp_dir = path_tmp_dir
self.kw = kw
self.mimetype_registry = self.kw.pop("mimetype_registry")
+ self.handler_dict = self.kw.pop("handler_dict")
def convertFile(self, file, source_format, destination_format, zip=False,
refresh=False):
@@ -90,7 +87,8 @@ class Manager(object):
self.kw['refresh'] = refresh
handler = getHandlerObject(source_format,
destination_format,
- self.mimetype_registry)
+ self.mimetype_registry,
+ self.handler_dict)
document = handler(self._path_tmp_dir,
decodestring(file),
source_format,
@@ -108,7 +106,8 @@ class Manager(object):
"""
handler = getHandlerObject(source_format,
None,
- self.mimetype_registry)
+ self.mimetype_registry,
+ self.handler_dict)
document = handler(self._path_tmp_dir,
decodestring(file),
source_format,
@@ -134,7 +133,8 @@ class Manager(object):
"""
handler = getHandlerObject(source_format,
None,
- self.mimetype_registry)
+ self.mimetype_registry,
+ self.handler_dict)
document = handler(self._path_tmp_dir,
decodestring(file),
source_format,
Modified: erp5/trunk/utils/cloudooo/cloudooo/paster_application.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/paster_application.py?rev=43738&r1=43737&r2=43738&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/paster_application.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/paster_application.py [utf8] Fri Feb 25 13:55:00 2011
@@ -111,7 +111,14 @@ def application(global_config, **local_c
openoffice_port, **kw)
openoffice.release()
kw["mimetype_registry"] = filter(None,
- local_config.get("mimetype_registry", "").split("\n"))
+ local_config.get("mimetype_registry",
+ "").split("\n"))
+ 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
+
kw["env"] = environment_dict
from manager import Manager
cloudooo_manager = Manager(cloudooo_path_tmp_dir, **kw)
More information about the Erp5-report
mailing list