[Erp5-report] r41937 gabriel - in /erp5/trunk/utils/cloudooo/cloudooo: ./ handler/ handler/...

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Jan 3 10:43:05 CET 2011


Author: gabriel
Date: Mon Jan  3 10:43:04 2011
New Revision: 41937

URL: http://svn.erp5.org?rev=41937&view=rev
Log:
revert part of r41929. Interfaces must remain in cloudooo

Added:
    erp5/trunk/utils/cloudooo/cloudooo/interfaces/
      - copied from r41934, erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/interfaces/
Removed:
    erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/interfaces/
Modified:
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/application.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/openoffice.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/xvfb.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/document.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/filter.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/granulator.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/handler.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/mimemapper.py
    erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/monitor/monitor.py
    erp5/trunk/utils/cloudooo/cloudooo/manager.py
    erp5/trunk/utils/cloudooo/cloudooo/tests/testInterface.py

Removed: erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py?rev=41936&view=auto
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/oohandler.py (removed)
@@ -1,221 +0,0 @@
-##############################################################################
-#
-# Copyright (c) 2009-2010 Nexedi SA and Contributors. All Rights Reserved.
-#                    Gabriel M. Monnerat <gabriel at tiolive.com>
-#
-# WARNING: This program as such is intended to be used by professional
-# programmers who take the whole responsibility of assessing all potential
-# consequences resulting from its eventual inadequacies and bugs
-# End users who are looking for a ready-to-use solution with commercial
-# guarantees and support are strongly adviced to contract a Free Software
-# Service Company
-#
-# This program is Free Software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-#
-##############################################################################
-
-import json
-import re
-import pkg_resources
-from base64 import decodestring, encodestring
-from os import environ, path
-from subprocess import Popen, PIPE
-from cloudooo.application.openoffice import openoffice
-from cloudooo.application.xvfb import xvfb
-from zope.interface import implements
-from cloudooo.interfaces.handler import IHandler
-from cloudooo.mimemapper import mimemapper
-from cloudooo.document import FileSystemDocument
-from cloudooo.monitor.timeout import MonitorTimeout
-from cloudooo.utils import logger
-from psutil import pid_exists
-
-
-class OOHandler:
-  """OOHandler is used to access the one Document and OpenOffice.
-  For each Document inputed is created on instance of this class to manipulate
-  the document. This Document must be able to create and remove a temporary
-  document at FS, load and export.
-  """
-  implements(IHandler)
-
-  def __init__(self, base_folder_url, data, source_format, **kw):
-    """Creates document in file system and loads it in OOo."""
-    self.document = FileSystemDocument(base_folder_url,
-                                      data,
-                                      source_format)
-    self.zip = kw.get('zip', False)
-    self.uno_path = kw.get("uno_path", None)
-    self.office_binary_path = kw.get("office_binary_path", None)
-    self.timeout = kw.get("timeout", 600)
-    self.refresh = kw.get('refresh', False)
-    self.source_format = source_format
-    if not self.uno_path:
-      self.uno_path = environ.get("uno_path")
-    if not self.office_binary_path:
-      self.office_binary_path = environ.get("office_binary_path")
-
-  def _getCommand(self, *args, **kw):
-    """Transforms all parameters passed in a command"""
-    hostname, port = openoffice.getAddress()
-    kw['hostname'] = hostname
-    kw['port'] = port
-    python = path.join(self.office_binary_path, "python")
-    command_list = [path.exists(python) and python or "python",
-                    pkg_resources.resource_filename("cloudooo",
-                                       path.join("helper", "unoconverter.py")),
-                    "--uno_path='%s'" % self.uno_path,
-                    "--office_binary_path='%s'" % self.office_binary_path,
-                    "--document_url='%s'" % self.document.getUrl()]
-    for arg in args:
-      command_list.insert(3, "--%s" % arg)
-    for k, v in kw.iteritems():
-      command_list.append("--%s='%s'" % (k, v))
-
-    return ' '.join(command_list)
-
-  def _startTimeout(self):
-    """start the Monitor"""
-    self.monitor = MonitorTimeout(openoffice, self.timeout)
-    self.monitor.start()
-
-  def _stopTimeout(self):
-    """stop the Monitor"""
-    self.monitor.terminate()
-
-  def _subprocess(self, command):
-    """Run one procedure"""
-    try:
-      self._startTimeout()
-      process = Popen(command,
-                    shell=True,
-                    stdout=PIPE,
-                    stderr=PIPE,
-                    close_fds=True)
-      stdout, stderr = process.communicate()
-    except OSError, e:
-      self.monitor = process = None
-      stdout, stderr = "", "OSError: %s" % e
-    finally:
-      if self.monitor is not None and process is not None:
-        self._stopTimeout()
-        if pid_exists(process.pid):
-          process.terminate()
-    return stdout, stderr
-
-  def _callUnoConverter(self, *feature_list, **kw):
-    """ """
-    if not openoffice.status():
-      xvfb.restart()
-      openoffice.start()
-    command = self._getCommand(*feature_list, **kw)
-    stdout, stderr = self._subprocess(command)
-    if not stdout and len(re.findall("\w*Exception|\w*Error", stderr)) >= 1:
-      logger.debug(stderr)
-      self.document.restoreOriginal()
-      openoffice.restart()
-      kw['document_url'] = self.document.getUrl()
-      command = self._getCommand(*feature_list, **kw)
-      stdout, stderr = self._subprocess(command)
-      if stderr != "":
-          raise Exception, stderr
-
-    return stdout, stderr
-
-  def _serializeMimemapper(self, extension=None):
-    """Serialize parts of mimemapper"""
-    if extension is None:
-      return json.dumps(dict(mimetype_by_filter_type=mimemapper._mimetype_by_filter_type))
-
-    filter_list = []
-    for service_type in mimemapper._doc_type_list_by_extension[extension]:
-      for extension in mimemapper.extension_list_by_doc_type[service_type]:
-        filter_list.append((extension,
-                            service_type,
-                            mimemapper.getFilterName(extension,
-                                                     service_type)))
-    return json.dumps(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
-    Keyword Arguments:
-    destination_format -- extension of document as String
-    """
-    logger.debug("Convert: %s > %s" % (self.source_format, destination_format))
-    openoffice.acquire()
-    kw['source_format'] = self.source_format
-    if destination_format:
-      kw['destination_format'] = destination_format
-    kw['mimemapper'] = self._serializeMimemapper(destination_format)
-    kw['refresh'] = json.dumps(self.refresh)
-    try:
-      stdout, stderr = self._callUnoConverter(*['convert'], **kw)
-    finally:
-      openoffice.release()
-      if self.monitor.is_alive():
-        self._stopTimeout()
-    url = stdout.replace('\n', '')
-    self.document.reload(url)
-    content = self.document.getContent(self.zip)
-    self.document.trash()
-    return content
-
-  def getMetadata(self, base_document=False):
-    """Returns a dictionary with all metadata of document.
-    Keywords Arguments:
-    base_document -- Boolean variable. if true, the document is also returned
-    along with the metadata."""
-    openoffice.acquire()
-    logger.debug("getMetadata")
-    kw = dict(mimemapper=self._serializeMimemapper())
-    if base_document:
-      feature_list = ['getmetadata', 'convert']
-    else:
-      feature_list = ['getmetadata']
-    try:
-      stdout, stderr = self._callUnoConverter(*feature_list, **kw)
-    finally:
-      openoffice.release()
-      if self.monitor.is_alive():
-        self._stopTimeout()
-    metadata = json.loads(decodestring(stdout))
-    if metadata.get("Data"):
-      self.document.reload(metadata['Data'])
-      metadata['Data'] = self.document.getContent()
-    else:
-      metadata['Data'] = ''
-    self.document.trash()
-    return metadata
-
-  def setMetadata(self, metadata):
-    """Returns a document with new metadata.
-    Keyword arguments:
-    metadata -- expected an dictionary with metadata.
-    """
-    openoffice.acquire()
-    metadata_pickled = json.dumps(metadata)
-    logger.debug("setMetadata")
-    kw = dict(metadata=encodestring(metadata_pickled))
-    try:
-      stdout, stderr = self._callUnoConverter(*['setmetadata'], **kw)
-    finally:
-      openoffice.release()
-      if self.monitor.is_alive():
-        self._stopTimeout()
-    doc_loaded = self.document.getContent()
-    self.document.trash()
-    return doc_loaded

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/application.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/application.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/application.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/application.py [utf8] Mon Jan  3 10:43:04 2011
@@ -27,7 +27,7 @@
 ##############################################################################
 
 from zope.interface import implements
-from cloudooo.handler.ooo.interfaces.application import IApplication
+from cloudooo.interfaces.application import IApplication
 from cloudooo.handler.ooo.utils import logger, socketStatus, waitStopDaemon
 from psutil import pid_exists, Process
 

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/openoffice.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/openoffice.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/openoffice.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/openoffice.py [utf8] Mon Jan  3 10:43:04 2011
@@ -35,7 +35,7 @@ from threading import Lock
 from zope.interface import implements
 from application import Application
 from xvfb import xvfb
-from cloudooo.handler.ooo.interfaces.lockable import ILockable
+from cloudooo.interfaces.lockable import ILockable
 from cloudooo.handler.ooo.utils import logger, waitStartDaemon, \
                                     removeDirectory, waitStopDaemon, \
                                     convertStringToBool, socketStatus

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/xvfb.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/xvfb.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/xvfb.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/application/xvfb.py [utf8] Mon Jan  3 10:43:04 2011
@@ -30,7 +30,7 @@ from subprocess import Popen, PIPE
 from cloudooo.handler.ooo.utils import logger, waitStartDaemon, remove_file
 from zope.interface import implements
 from application import Application
-from cloudooo.handler.ooo.interfaces.application import IApplication
+from cloudooo.interfaces.application import IApplication
 from os.path import exists
 
 

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/document.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/document.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/document.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/document.py [utf8] Mon Jan  3 10:43:04 2011
@@ -35,7 +35,7 @@ from zipfile import ZipFile, is_zipfile
 from shutil import rmtree
 from StringIO import StringIO
 from lxml import etree
-from interfaces.document import IDocument, IOdfDocument
+from cloudooo.interfaces.document import IDocument, IOdfDocument
 
 
 class FileSystemDocument(object):

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/filter.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/filter.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/filter.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/filter.py [utf8] Mon Jan  3 10:43:04 2011
@@ -27,7 +27,7 @@
 ##############################################################################
 
 from zope.interface import implements
-from interfaces.filter import IFilter
+from cloudooo.interfaces.filter import IFilter
 
 
 class Filter(object):

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/granulator.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/granulator.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/granulator.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/granulator.py [utf8] Mon Jan  3 10:43:04 2011
@@ -33,7 +33,7 @@ from lxml import etree
 from os import path
 from cloudooo.handler.ooo.utils import logger
 from cloudooo.handler.ooo.document import OdfDocument
-from cloudooo.handler.ooo.interfaces.granulate import ITableGranulator, \
+from cloudooo.interfaces.granulate import ITableGranulator, \
                                           IImageGranulator, \
                                           ITextGranulator
 

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/handler.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/handler.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/handler.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/handler.py [utf8] Mon Jan  3 10:43:04 2011
@@ -35,7 +35,7 @@ from subprocess import Popen, PIPE
 from cloudooo.handler.ooo.application.openoffice import openoffice
 from cloudooo.handler.ooo.application.xvfb import xvfb
 from zope.interface import implements
-from cloudooo.handler.ooo.interfaces.handler import IHandler
+from cloudooo.interfaces.handler import IHandler
 from cloudooo.handler.ooo.mimemapper import mimemapper
 from cloudooo.handler.ooo.document import FileSystemDocument
 from cloudooo.handler.ooo.monitor.timeout import MonitorTimeout

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/mimemapper.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/mimemapper.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/mimemapper.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/mimemapper.py [utf8] Mon Jan  3 10:43:04 2011
@@ -32,7 +32,7 @@ from subprocess import Popen, PIPE
 from zope.interface import implements
 from filter import Filter
 from os import environ, path
-from interfaces.mimemapper import IMimemapper
+from cloudooo.interfaces.mimemapper import IMimemapper
 from types import InstanceType
 from utils import getCleanPythonEnvironment
 import json

Modified: erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/monitor/monitor.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/monitor/monitor.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/monitor/monitor.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/handler/ooo/monitor/monitor.py [utf8] Mon Jan  3 10:43:04 2011
@@ -27,7 +27,7 @@
 ##############################################################################
 
 from zope.interface import implements
-from cloudooo.handler.ooo.interfaces.monitor import IMonitor
+from cloudooo.interfaces.monitor import IMonitor
 
 
 class Monitor(object):

Modified: erp5/trunk/utils/cloudooo/cloudooo/manager.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/manager.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/manager.py [utf8] Mon Jan  3 10:43:04 2011
@@ -30,7 +30,7 @@
 from mimetypes import guess_all_extensions, guess_extension
 from base64 import encodestring, decodestring
 from zope.interface import implements
-from handler.ooo.interfaces.manager import IManager, IERP5Compatibility
+from interfaces.manager import IManager, IERP5Compatibility
 from handler.ooo.handler import OOHandler
 from handler.ooo.mimemapper import mimemapper
 from handler.ooo.utils import logger

Modified: erp5/trunk/utils/cloudooo/cloudooo/tests/testInterface.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo/cloudooo/tests/testInterface.py?rev=41937&r1=41936&r2=41937&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo/cloudooo/tests/testInterface.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo/cloudooo/tests/testInterface.py [utf8] Mon Jan  3 10:43:04 2011
@@ -36,15 +36,15 @@ from cloudooo.handler.ooo.filter import 
 from cloudooo.handler.ooo.application.xvfb import Xvfb
 from cloudooo.handler.ooo.monitor.request import MonitorRequest
 from cloudooo.handler.ooo.granulator import OOGranulator
-from cloudooo.handler.ooo.interfaces.document import IDocument, IOdfDocument
-from cloudooo.handler.ooo.interfaces.lockable import ILockable
-from cloudooo.handler.ooo.interfaces.manager import IManager
-from cloudooo.handler.ooo.interfaces.application import IApplication
-from cloudooo.handler.ooo.interfaces.filter import IFilter
-from cloudooo.handler.ooo.interfaces.mimemapper import IMimemapper
-from cloudooo.handler.ooo.interfaces.handler import IHandler
-from cloudooo.handler.ooo.interfaces.monitor import IMonitor
-from cloudooo.handler.ooo.interfaces.granulate import ITableGranulator, \
+from cloudooo.interfaces.document import IDocument, IOdfDocument
+from cloudooo.interfaces.lockable import ILockable
+from cloudooo.interfaces.manager import IManager
+from cloudooo.interfaces.application import IApplication
+from cloudooo.interfaces.filter import IFilter
+from cloudooo.interfaces.mimemapper import IMimemapper
+from cloudooo.interfaces.handler import IHandler
+from cloudooo.interfaces.monitor import IMonitor
+from cloudooo.interfaces.granulate import ITableGranulator, \
                                           IImageGranulator, \
                                           ITextGranulator
 from cloudoooTestCase import make_suite



More information about the Erp5-report mailing list