[Erp5-report] r45555 mario.amaral - /erp5/trunk/utils/cloudooo.handler.ooo/src/cloudooo/han...

nobody at svn.erp5.org nobody at svn.erp5.org
Mon Apr 18 18:50:38 CEST 2011


Author: mario.amaral
Date: Mon Apr 18 18:50:38 2011
New Revision: 45555

URL: http://svn.erp5.org?rev=45555&view=rev
Log:
New implementation to getImageItemList.

Modified:
    erp5/trunk/utils/cloudooo.handler.ooo/src/cloudooo/handler/ooo/granulator.py

Modified: erp5/trunk/utils/cloudooo.handler.ooo/src/cloudooo/handler/ooo/granulator.py
URL: http://svn.erp5.org/erp5/trunk/utils/cloudooo.handler.ooo/src/cloudooo/handler/ooo/granulator.py?rev=45555&r1=45554&r2=45555&view=diff
==============================================================================
--- erp5/trunk/utils/cloudooo.handler.ooo/src/cloudooo/handler/ooo/granulator.py [utf8] (original)
+++ erp5/trunk/utils/cloudooo.handler.ooo/src/cloudooo/handler/ooo/granulator.py [utf8] Mon Apr 18 18:50:38 2011
@@ -36,16 +36,20 @@ from cloudooo.handler.ooo.document impor
 # URI Definitions.
 TEXT_URI = 'urn:oasis:names:tc:opendocument:xmlns:text:1.0'
 TABLE_URI = 'urn:oasis:names:tc:opendocument:xmlns:table:1.0'
+DRAWING_URI = 'urn:oasis:names:tc:opendocument:xmlns:drawing:1.0'
 
 # Odf Namespaces
 TABLE_ATTRIB_NAME = '{%s}name' % TABLE_URI
 TEXT_ATTRIB_STYLENAME = '{%s}style-name' % TEXT_URI
+DRAWING_ATTRIB_STYLENAME = '{%s}style-name' % DRAWING_URI
+DRAWING_ATTRIB_NAME = '{%s}name' % DRAWING_URI
 
 # XPath queries for ODF format
 RELEVANT_PARAGRAPH_XPATH_QUERY = '//text:p[not(ancestor::draw:frame)]'
 DRAW_XPATH_QUERY = './/draw:image'
 TABLE_XPATH_QUERY = './/table:table'
-IMAGE_TITLE_XPATH_QUERY = './/../../text() | .//../../*/text()'
+IMAGE_TITLE_XPATH_QUERY = '//draw:text-box/text:p/draw:frame[@draw:style-name="%s"][@draw:name="%s"]/draw:image[@xlink:href="Pictures/%s"]/ancestor::draw:frame/following-sibling::text()'
+IMAGE_DRAW_NAME_AND_STYLENAME_XPATH_QUERY = '//draw:text-box/text:p/draw:frame'
 CHAPTER_XPATH_QUERY = '//text:p[@text:style-name="Title"]/text:span/text() | //text:h/text:span/text()'
 
 def getTemplatePath(format):
@@ -84,6 +88,10 @@ class OOGranulator(object):
       title = ''.join(table.xpath('following-sibling::text:p[position()=1] \
                           [starts-with(@text:style-name, "Table")]//text()',
                           namespaces=table.nsmap))
+      if title == '':
+        title = ''.join(table.xpath('following-sibling::text:p[position()=1] \
+                    [starts-with(@text:style-name, "Tabela")]//text()',
+                    namespaces=table.nsmap))
       id = table.attrib[TABLE_ATTRIB_NAME]
       table_list.append((id, title))
     return table_list
@@ -171,17 +179,42 @@ class OOGranulator(object):
         fields.remove(fields[0])
     return matrix
 
+  #this function will be use to pick up the attibutes name and style-name
+  def _getFrameImageList(self):
+    RELEVANT_IMAGE_CACHE = getattr(self, "RELEVANT_PARAGRAPH_CACHE", None)
+    if RELEVANT_IMAGE_CACHE is None:
+      relevant_image_list = self.document.parsed_content.xpath(
+                                 IMAGE_DRAW_NAME_AND_STYLENAME_XPATH_QUERY,
+                                 namespaces=self.document.parsed_content.nsmap)
+      setattr(self, "RELEVANT_IMAGE_CACHE", relevant_image_list)
+
+    return self.RELEVANT_IMAGE_CACHE
+
   def getImageItemList(self):
     """Return a list of tuples with the id and title of image files"""
     xml_image_list = self.document.parsed_content.xpath(DRAW_XPATH_QUERY,
                                 namespaces=self.document.parsed_content.nsmap)
+    name_list = []
+    stylename_list = []
+    for i in self._getFrameImageList():
+      name_list.append(i.attrib[DRAWING_ATTRIB_NAME])
+      stylename_list.append(i.attrib[DRAWING_ATTRIB_STYLENAME])
 
     image_list = []
+
     for xml_image in xml_image_list:
-      title = ''.join(xml_image.xpath(IMAGE_TITLE_XPATH_QUERY,
-                                      namespaces=xml_image.nsmap))
       id = xml_image.values()[0].split('/')[-1]
+      title = ''.join(xml_image.xpath(IMAGE_TITLE_XPATH_QUERY%(stylename_list[0], name_list[0], id),
+                                      namespaces=xml_image.nsmap))
+      if title != '':
+        title_list = title.split(':')
+        title = ''.join(title_list[1:])
+        title = title.strip()
+        name_list.pop(0)
+        stylename_list.pop(0)
+
       image_list.append((id, title))
+    
     return image_list
 
   def getImage(self, id, format=None, resolution=None, **kw):



More information about the Erp5-report mailing list