[Erp5-report] r43694 mario.amaral - /erp5/trunk/utils/cloudooo/cloudooo/manager.py

nobody at svn.erp5.org nobody at svn.erp5.org
Thu Feb 24 18:08:40 CET 2011


Author: mario.amaral
Date: Thu Feb 24 18:08:39 2011
New Revision: 43694

URL: http://svn.erp5.org?rev=43694&view=rev
Log:
Implementation of public Interfaces for Manager.py

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

Modified: erp5/trunk/utils/cloudooo/cloudooo/manager.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/manager.py?rev=43694&r1=43693&r2=43694&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] Thu Feb 24 18:08:39 2011
@@ -31,17 +31,23 @@ from mimetypes import guess_all_extensio
 from base64 import encodestring, decodestring
 from zope.interface import implements
 from interfaces.manager import IManager, IERP5Compatibility
+from handler.ooo.granulator import OOGranulator
+from handler.ooo.handler import OOHandler
+from handler.pdf.handler import PDFHandler
+from handler.ffmpeg.handler import FFMPEGHandler
 from cloudooo.handler.ooo.handler import OOHandler
 from cloudooo.handler.pdf.handler import PDFHandler
 from cloudooo.handler.ffmpeg.handler import FFMPEGHandler
 from cloudooo.handler.imagemagick.handler import ImageMagickHandler
 from handler.ooo.mimemapper import mimemapper
 from utils.utils import logger
+from cloudooo.interfaces.granulate import ITableGranulator, \
+                                          IImageGranulator, \
+                                          ITextGranulator
 from fnmatch import fnmatch
 import mimetypes
 import pkg_resources
 
-
 HANDLER_DICT = {"pdf": PDFHandler,
                 "ooo": OOHandler,
                 "ffmpeg": FFMPEGHandler,
@@ -62,7 +68,9 @@ def getHandlerObject(source_format, dest
 
 class Manager(object):
   """Manipulates requisitons of client and temporary files in file system."""
-  implements(IManager, IERP5Compatibility)
+  implements(IManager, IERP5Compatibility, ITableGranulator, IImageGranulator,
+             ITextGranulator)
+
 
   def __init__(self, path_tmp_dir, **kw):
     """Need pass the path where the temporary document will be created."""
@@ -92,31 +100,6 @@ class Manager(object):
     decode_data = document.convert(destination_format)
     return encodestring(decode_data)
 
-  def granulateFile(self, file, source_format, zip=False):
-    """Returns the parts of an document splited by grains.
-    Keywords arguments:
-      file -- File as string in base64
-      source_format -- Format of original file as string
-      zip -- Boolean Attribute. If true, returns the grains in the form of a
-      zip archive
-    """
-    raise NotImplementedError
-    GRANULATABLE_FORMAT_LIST = ("odt",)
-    if source_format not in GRANULATABLE_FORMAT_LIST:
-      file = self.convertFile(file, source_format,
-                              GRANULATABLE_FORMAT_LIST[0], zip=False)
-    from granulate.oogranulate import OOGranulate
-
-    try:
-      document = OOGranulate(decodestring(file), source_format)
-      grain = document.granulate(zip)
-      if zip:
-        return encodestring(grain)
-      return map(encodestring, grain)
-    finally:
-      document.trash()
-    return None
-
   def updateFileMetadata(self, file, source_format, metadata_dict):
     """Receives the string of document and a dict with metadatas. The metadata
     is added in document.
@@ -313,3 +296,69 @@ class Manager(object):
     except Exception, e:
       logger.error(e)
       return (402, {}, e.args[0])
+
+  def _getOOGranulator(self, data, source_format="odt"):
+    """Returns an instance of the handler OOGranulator after convert the
+    data to 'odt'"""
+    GRANULATABLE_FORMAT_LIST = ("odt",)
+    if source_format not in GRANULATABLE_FORMAT_LIST:
+      data = self.convertFile(data, source_format,
+                    GRANULATABLE_FORMAT_LIST[0], zip=False)
+    return OOGranulator(decodestring(data), GRANULATABLE_FORMAT_LIST[0])
+
+  def getTableItemList(self, data, source_format="odt"):
+    """Returns the list of table IDs in the form of (id, title)."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getTableItemList()
+
+  def getTableItem(self, data, id, source_format="odt"):
+    """Returns the table into a new 'format' file."""
+    document = self._getOOGranulator(data, source_format)
+    return encodestring(document.getTableItem(id, source_format))
+
+  def getTableMatrix(self, data, table_id, source_format):
+    """Returns the table as a matrix."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getTableMatrix(table_id)
+
+  def getColumnItemList(self, data, table_id, source_format):
+    """Return the list of columns in the form of (id, title)."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getColumnItemList(table_id)
+
+  def getLineItemList(self, data, table_id, source_format):
+    """Returns the lines of a given table as (key, value) pairs."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getLineItemList(table_id)
+
+  def getImageItemList(self, data, source_format):
+    """Return the list of images in the form of (id, title)."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getImageItemList()
+
+  def getImage(self, data, image_id, source_format, format=None,
+               resolution=None, **kw):
+    """Return the given image."""
+    document = self._getOOGranulator(data, source_format)
+    return encodestring(document.getImage(image_id, format, resolution, **kw))
+
+  def getParagraphItemList(self, data, source_format):
+    """Returns the list of paragraphs in the form of (id, class) where class
+       may have special meaning to define TOC/TOI."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getParagraphItemList()
+
+  def getParagraphItem(self, data, paragraph_id, source_format):
+    """Returns the paragraph in the form of (text, class)."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getParagraphItem(paragraph_id)
+
+  def getChapterItemList(self, data, source_format):
+    """Returns the list of chapters in the form of (id, level)."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getChapterItemList(data)
+
+  def getChapterItem(self, chapter_id, data, source_format):
+    """Return the chapter in the form of (title, level)."""
+    document = self._getOOGranulator(data, source_format)
+    return document.getChapterItem(data, chapter_id)



More information about the Erp5-report mailing list