diff options
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 |
commit | c27e8ff3493bb9e03d0fbc4db0b6b14fa289a5a0 (patch) | |
tree | 98d22b4a3d97b3c20c90e31825ea0d51b1e068b1 | |
parent | 172d485d7ebe42c1bf071633c3b127d2139e2dd6 (diff) | |
download | Ishtar-c27e8ff3493bb9e03d0fbc4db0b6b14fa289a5a0.tar.bz2 Ishtar-c27e8ff3493bb9e03d0fbc4db0b6b14fa289a5a0.zip |
OOO: manage replacement in headers
-rw-r--r-- | ishtar_common/ooo_replace.py | 23 |
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 |