[Erp5-report] r38566 gabriel - in /erp5/trunk/utils/cloudooo/cloudooo: ./ handler/ helper/
nobody at svn.erp5.org
nobody at svn.erp5.org
Wed Sep 22 22:27:37 CEST 2010
Author: gabriel
Date: Wed Sep 22 22:27:37 2010
New Revision: 38566
URL: http://svn.erp5.org?rev=38566&view=rev
Log:
refactor code to not pass the object mimemapper, serialize only a part of it
Modified:
erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py
erp5/trunk/utils/cloudooo/cloudooo/helper/unoconverter.py
erp5/trunk/utils/cloudooo/cloudooo/mimemapper.py
Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py?rev=38566&r1=38565&r2=38566&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py [utf8] Wed Sep 22 22:27:37 2010
@@ -134,6 +134,20 @@ class OOHandler:
return stdout, stderr
+ def _serializeMimemapper(self):
+ """Serialize parts of mimemapper"""
+ filter_list = []
+ for extension in mimemapper.extension_list:
+ for service_type in mimemapper.document_service_list:
+ if service_type in mimemapper._doc_type_list_by_extension[extension]:
+ filter_list.append((extension,
+ service_type,
+ mimemapper.getFilterName(extension, service_type)))
+
+ return jsonpickle.encode(dict(doc_type_list_by_extension=mimemapper._doc_type_list_by_extension,
+ filter_list=filter_list,
+ mimetype_by_filter_type=mimemapper._mimetype_by_filter_type))
+
def convert(self, destination_format=None, **kw):
"""Convert a document to another format supported by the OpenOffice
@@ -145,7 +159,7 @@ class OOHandler:
kw['source_format'] = self.source_format
if destination_format:
kw['destination_format'] = destination_format
- kw['mimemapper'] = jsonpickle.encode(mimemapper)
+ kw['mimemapper'] = self._serializeMimemapper()
try:
stdout, stderr = self._callUnoConverter(*['convert'], **kw)
finally:
@@ -167,7 +181,7 @@ class OOHandler:
openoffice.acquire()
mimemapper_pickled = jsonpickle.encode(mimemapper)
logger.debug("getMetadata")
- kw = dict(mimemapper=mimemapper_pickled)
+ kw = dict(mimemapper=self._serializeMimemapper())
if base_document:
feature_list = ['getmetadata', 'convert']
else:
Modified: erp5/trunk/utils/cloudooo/cloudooo/helper/unoconverter.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/helper/unoconverter.py?rev=38566&r1=38565&r2=38566&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/helper/unoconverter.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/helper/unoconverter.py [utf8] Wed Sep 22 22:27:37 2010
@@ -147,15 +147,20 @@ class UnoConverter(object):
return [property,]
+ def _getFilterName(self, destination_format, type):
+ for filter_tuple in mimemapper["filter_list"]:
+ if destination_format == filter_tuple[0] and filter_tuple[1] == type:
+ return filter_tuple[2]
+
def _getPropertyToExport(self, destination_format=None):
"""Create the property according to the extension of the file."""
if destination_format and self.document_loaded:
- doc_type_list = mimemapper._doc_type_list_by_extension.get(destination_format)
+ doc_type_list = mimemapper["doc_type_list_by_extension"].get(destination_format)
if self.document_type not in doc_type_list:
raise AttributeError, \
"This Document can not be converted for this format"
type = self.document_type
- filter_name = mimemapper.getFilterName(destination_format, type)
+ filter_name = self._getFilterName(destination_format, type)
property_list = []
property = self._createProperty("Overwrite", True)
property_list.append(property)
@@ -230,7 +235,7 @@ class UnoConverter(object):
filter_name = type_detection.queryTypeByDescriptor(tuple(property_list), \
True)[0]
doc.closeInput()
- metadata['MIMEType'] = mimemapper.getMimetypeByFilterType(filter_name)
+ metadata['MIMEType'] = mimemapper["mimetype_by_filter_type"].get(filter_name)
return metadata
def setMetadata(self, metadata):
@@ -304,8 +309,6 @@ def main():
metadata = jsonpickle.decode(arg)
elif opt == '--mimemapper':
mimemapper = jsonpickle.decode(arg)
- elif opt == '--unomimemapper_bin':
- unomimemapper_bin = arg
kw = {}
if "uno_path" in locals():
@@ -314,11 +317,6 @@ def main():
if "office_binary_path" in locals():
kw['office_binary_path'] = office_binary_path
- if "mimemapper" not in globals() and "--setmetadata" not in param_list:
- from cloudooo.mimemapper import mimemapper
- kw['python_path'] = sys.executable
- mimemapper.loadFilterList(hostname=hostname, port=port, **kw)
-
if 'source_format' in locals():
kw['source_format'] = source_format
Modified: erp5/trunk/utils/cloudooo/cloudooo/mimemapper.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/mimemapper.py?rev=38566&r1=38565&r2=38566&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/mimemapper.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/mimemapper.py [utf8] Wed Sep 22 22:27:37 2010
@@ -52,6 +52,7 @@ class MimeMapper(object):
self._doc_type_list_by_extension = {}
# List of extensions that are ODF
self._odf_extension_list = []
+ self.extension_list = []
self._mimetype_by_filter_type = {}
self._document_type_dict = {}
@@ -128,9 +129,9 @@ class MimeMapper(object):
filter_type_dict = type_dict.get(filter_type)
if not ui_name:
ui_name = filter_type_dict.get("UIName")
- extension_list = filter_type_dict.get("Extensions")
+ filter_extension_list = filter_type_dict.get("Extensions")
mimetype = filter_type_dict.get("MediaType")
- if not (extension_list and mimetype):
+ if not (filter_extension_list and mimetype):
continue
preferred = filter_type_dict.get("Preferred")
document_service_str = value.get('DocumentService')
@@ -153,9 +154,11 @@ class MimeMapper(object):
if not self._extension_list_by_type.has_key(document_service_str):
self._extension_list_by_type[document_service_str] = []
- for ext in iter(extension_list):
+ for ext in iter(filter_extension_list):
# All mimetypes that starts with "application/vnd.oasis.opendocument" are
# ODF.
+ if ext not in self.extension_list:
+ self.extension_list.append(ext)
if mimetype.startswith("application/vnd.oasis.opendocument"):
if not ext in self._odf_extension_list:
self._odf_extension_list.append(ext)
@@ -178,6 +181,7 @@ class MimeMapper(object):
preferred=preferred, sort_index=sort_index, label=ui_name)
# Adds the object in filter_by_extension_dict
self._addFilter(filter)
+ self.document_service_list = self._extension_list_by_type.keys()
self._loaded = True
def getMimetypeByFilterType(self, filter_type):
More information about the Erp5-report
mailing list