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 | 1eea0d98d0ddd060c7d81bd6763e8c4937f92a72 (patch) | |
| tree | 98d22b4a3d97b3c20c90e31825ea0d51b1e068b1 | |
| parent | e85ec14619cba93af06b5eb877529e9905885e19 (diff) | |
| download | Ishtar-1eea0d98d0ddd060c7d81bd6763e8c4937f92a72.tar.bz2 Ishtar-1eea0d98d0ddd060c7d81bd6763e8c4937f92a72.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 | 
