~ubuntu-branches/ubuntu/trusty/python-docutils/trusty-proposed

« back to all changes in this revision

Viewing changes to tools/rst2odt_prepstyles.py

  • Committer: Package Import Robot
  • Author(s): Michael Schutte, Jakub Wilk, Michael Schutte, Dmitry Shachnev
  • Date: 2013-08-05 16:47:43 UTC
  • mfrom: (11.1.9 experimental)
  • Revision ID: package-import@ubuntu.com-20130805164743-00lyz2imgs85ttwz
Tags: 0.11-1
[ Jakub Wilk ]
* Remove martin f. krafft and Ben Finney from Uploaders at their requests.

[ Michael Schutte ]
* New upstream release 0.11, closes: #712284, #714880.
  - Drop patch math-output-html.diff: Fixed upstream.
  - Drop patch fix-buildhtml-progress.diff: Applied upstream.
  - Drop patch strict-csv-parser.diff: Fixed upstream.
  - Drop patch unknown-url-exc-use-repr.diff: Applied upstream.
  - Update patch move-data-to-usr-share.diff: Default stylesheet paths for
    writers/html4css1 have changed.
  - Refresh the remaining patches.
  - New patch no-local-roman.diff: Use the roman module from python-roman
    instead of the copy shipped with docutils.
  - Update information about upstream version control in debian/copyright.
* Change my e-mail host in Uploaders and debian/copyright to @debian.org.
* New patch rst2odt_prepstyles-elementtree.diff: Port the rst2odt_prepstyles
  utility to ElementTree.  Drop Recommends: python-lxml.  Closes: #714319.
* New patch odt-writer-ascii-filenames.diff: Only use ASCII for filenames of
  images embedded in ODT files, closes: #714317.

[ Dmitry Shachnev ]
* Use dh_python2 instead of deprecated dh_pysupport.
* Add XS-Testsuite header, and replace XS-Python-Version with preferred
  X-Python-Version (closes: #685509).
* Add myself to Uploaders.

Show diffs side-by-side

added added

removed removed

Lines of Context:
12
12
#
13
13
# Author: Michael Schutte <michi@uiae.at>
14
14
 
15
 
from lxml import etree
 
15
try:
 
16
    from xml.etree import ElementTree as etree
 
17
except ImportError, e:
 
18
    try:
 
19
        from elementtree import ElementTree as etree
 
20
    except ImportError, e:
 
21
        raise ImportError('Missing an implementation of ElementTree. ' \
 
22
                'Please install either Python >= 2.5 or ElementTree.')
 
23
 
16
24
import sys
17
25
import zipfile
18
26
from tempfile import mkstemp
27
35
def prepstyle(filename):
28
36
    
29
37
    zin = zipfile.ZipFile(filename)
30
 
    styles = zin.read("styles.xml")
31
 
    
32
 
    root = etree.fromstring(styles)
33
 
    for el in root.xpath("//style:page-layout-properties", 
34
 
        namespaces=NAMESPACES):
35
 
        for attr in el.attrib:
 
38
    styles = zin.open("styles.xml")
 
39
 
 
40
    root = None
 
41
    # some extra effort to preserve namespace prefixes
 
42
    for event, elem in etree.iterparse(styles, events=("start", "start-ns")):
 
43
        if event == "start-ns":
 
44
            etree.register_namespace(elem[0], elem[1])
 
45
        elif event == "start":
 
46
            if root is None:
 
47
                root = elem
 
48
 
 
49
    styles.close()
 
50
 
 
51
    for el in root.findall(".//style:page-layout-properties",
 
52
            namespaces=NAMESPACES):
 
53
        for attr in el.attrib.keys():
36
54
            if attr.startswith("{%s}" % NAMESPACES["fo"]):
37
55
                del el.attrib[attr]
38
56
    
42
60
    
43
61
    for item in zin.infolist():
44
62
        if item.filename == "styles.xml":
45
 
            zout.writestr(item, etree.tostring(root))
 
63
            zout.writestr(item, etree.tostring(root, encoding="UTF-8"))
46
64
        else:
47
65
            zout.writestr(item, zin.read(item.filename))
48
66