1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 import zipfile
24
25 from lxml import etree
26
27 from translate.storage.xml_name import XmlNamer
28
29
31 z = zipfile.ZipFile(filename, 'r')
32 return {'content.xml': z.read("content.xml"),
33 'meta.xml': z.read("meta.xml"),
34 'styles.xml': z.read("styles.xml")}
35
36
37 -def copy_odf(input_zip, output_zip, exclusion_list):
38 for name in [name for name in input_zip.namelist() if name not in exclusion_list]:
39 output_zip.writestr(name, input_zip.read(name))
40 return output_zip
41
42
44 return '{%s}%s' % (nsmap[short_namespace], tag)
45
46
47 -def add_file(output_zip, manifest_data, new_filename, new_data):
48 root = etree.fromstring(manifest_data)
49 namer = XmlNamer(root)
50 namespacer = namer.namespace('manifest')
51 file_entry_tag = namespacer.name('file-entry')
52 media_type_attr = namespacer.name('media-type')
53 full_path_attr = namespacer.name('full-path')
54
55 root.append(etree.Element(file_entry_tag, {media_type_attr: 'application/x-xliff+xml',
56 full_path_attr: new_filename}))
57 output_zip.writestr(new_filename, new_data)
58 output_zip.writestr('META-INF/manifest.xml', etree.tostring(root, xml_declaration=True, encoding="UTF-8"))
59 return output_zip
60