summaryrefslogtreecommitdiff
path: root/ishtar_common/ooo_replace.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@proxience.com>2015-03-03 18:58:57 +0100
committerÉtienne Loks <etienne.loks@proxience.com>2015-05-06 16:04:02 +0200
commitc27e8ff3493bb9e03d0fbc4db0b6b14fa289a5a0 (patch)
tree98d22b4a3d97b3c20c90e31825ea0d51b1e068b1 /ishtar_common/ooo_replace.py
parent172d485d7ebe42c1bf071633c3b127d2139e2dd6 (diff)
downloadIshtar-c27e8ff3493bb9e03d0fbc4db0b6b14fa289a5a0.tar.bz2
Ishtar-c27e8ff3493bb9e03d0fbc4db0b6b14fa289a5a0.zip
OOO: manage replacement in headers
Diffstat (limited to 'ishtar_common/ooo_replace.py')
-rw-r--r--ishtar_common/ooo_replace.py23
1 files changed, 16 insertions, 7 deletions
diff --git a/ishtar_common/ooo_replace.py b/ishtar_common/ooo_replace.py
index 4c487dd17..1f770fc2b 100644
--- a/ishtar_common/ooo_replace.py
+++ b/ishtar_common/ooo_replace.py
@@ -135,13 +135,9 @@ def _custom_parsing(context, value, default_value=''):
value = re.sub(sub_exp % (pre_tag, base_key), v, value)
return value
-def ooo_replace(infile, outfile, context, default_value=''):
- inzip = ZipFile(infile, 'r', ZIP_DEFLATED)
- outzip = ZipFile(outfile, 'w', ZIP_DEFLATED)
+def _ooo_replace(content, context, missing_keys, default_value=''):
# regular ooo parsing
- content = ElementTree(fromstring(inzip.read('content.xml')))
- missing_keys = set()
for xp in ('variable-set', 'variable-get'):
for p in content.findall(".//"+OOO_NS+xp):
name = p.get(OOO_NS+"name")
@@ -167,12 +163,25 @@ def ooo_replace(infile, outfile, context, default_value=''):
content.write(str_io)
value = str_io.getvalue()
value = _custom_parsing(context, value, default_value).encode('utf-8')
+ return value
+
+def ooo_replace(infile, outfile, context, default_value=''):
+ inzip = ZipFile(infile, 'r', ZIP_DEFLATED)
+ outzip = ZipFile(outfile, 'w', ZIP_DEFLATED)
+
+ values = {}
+ missing_keys = set()
+ for xml_file in ('content.xml', 'styles.xml'):
+ content = ElementTree(fromstring(inzip.read(xml_file)))
+ values[xml_file] = _ooo_replace(content, context, missing_keys,
+ default_value)
for f in inzip.infolist():
- if f.filename == 'content.xml':
- outzip.writestr('content.xml', value)
+ if f.filename in values:
+ outzip.writestr(f.filename, values[f.filename])
else:
outzip.writestr(f, inzip.read(f.filename))
+
inzip.close()
outzip.close()
return missing_keys