[Erp5-report] r31648 nicolas - /erp5/trunk/products/ERP5OOo/transforms/
nobody at svn.erp5.org
nobody at svn.erp5.org
Thu Jan 7 18:10:14 CET 2010
Author: nicolas
Date: Thu Jan 7 18:10:13 2010
New Revision: 31648
URL: http://svn.erp5.org?rev=31648&view=rev
Log:
* OOo corrupt relative Links inside HTML content during odt conversion
<img src="REF.TO.IMAGE" ... /> become <draw:image xlink:href="../REF.TO.IMAGE" ... />
so remove "../" added by OOo
* compile regex only once
reviewed by Kazuhiko
Modified:
erp5/trunk/products/ERP5OOo/transforms/oood_commandtransform.py
Modified: erp5/trunk/products/ERP5OOo/transforms/oood_commandtransform.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5OOo/transforms/oood_commandtransform.py?rev=31648&r1=31647&r2=31648&view=diff
==============================================================================
--- erp5/trunk/products/ERP5OOo/transforms/oood_commandtransform.py [utf8] (original)
+++ erp5/trunk/products/ERP5OOo/transforms/oood_commandtransform.py [utf8] Thu Jan 7 18:10:13 2010
@@ -1,3 +1,4 @@
+# -*- coding: utf-8 -*-
from Products.PortalTransforms.libtransforms.commandtransform import commandtransform
from Products.PortalTransforms.interfaces import idatastream
from Products.ERP5Type.Document import newTempOOoDocument
@@ -14,7 +15,8 @@
import_succeed = 0
from zLOG import LOG
-REMOTE_URL_PATTERN = '^((?P<protocol>http(s)?://)(?P<domain>[.a-zA-Z0-9]+)+)?(?P<port>:\d{4})?(?P<path>/?\S*)'
+REMOTE_URL_RE = re.compile('^((?P<protocol>http(s)?://)(?P<domain>[.a-zA-Z0-9]+)+)?(?P<port>:\d{4})?(?P<path>/?\S*)')
+CLEAN_RELATIVE_PATH = re.compile('^../')
class TransformError(Exception):
pass
@@ -69,8 +71,9 @@
return self.__name__
def includeImageList(self, data):
- """
- Include Images in ODF archive
+ """Include Images in ODF archive
+
+ - data: zipped archive content
"""
builder = OOoBuilder(data)
content = builder.extract('content.xml')
@@ -84,9 +87,13 @@
#Try to get image file from ZODB
href_attribute_list = image_tag.xpath('.//@*[name() = "xlink:href"]')
url = href_attribute_list[0]
- matching = re.match(REMOTE_URL_PATTERN, url)
+ matching = REMOTE_URL_RE.match(url)
if matching is not None:
path = matching.groupdict().get('path')
+ # OOo corrupt relative Links inside HTML content during odt conversion
+ # <img src="REF.TO.IMAGE" ... /> become <draw:image xlink:href="../REF.TO.IMAGE" ... />
+ # So remove "../" added by OOo
+ path = CLEAN_RELATIVE_PATH.sub('', path)
try:
image = self.context.restrictedTraverse(path)
except (AttributeError, KeyError):
@@ -122,8 +129,10 @@
return builder.render()
def includeExternalCssList(self, data):
- """
- Replace external Css link by style Element
+ """Replace external Css link by style Element,
+ to avoid ooo querying portal without crendentials through http.
+
+ - data: html content
"""
try:
xml_doc = etree.XML(data)
@@ -136,7 +145,7 @@
#Try to get css from ZODB
href_attribute_list = css_link_tag.xpath('.//@href')
url = href_attribute_list[0]
- matching = re.match(REMOTE_URL_PATTERN, url)
+ matching = REMOTE_URL_RE.match(url)
if matching is not None:
path = matching.groupdict().get('path')
try:
More information about the Erp5-report
mailing list