Scripts pour Nautilus.
[progfou.git] / nautilus-scripts / Déverrouillage de formulaire
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 # Debian-Depends: python (>= 2.6)
4 import sys
5 import zipfile
6 from xml.dom import minidom
7
8 if len(sys.argv) < 2:
9     sys.exit(0)
10
11 for filename in sys.argv[1:]:
12     if not zipfile.is_zipfile(filename):
13         continue
14
15     # file copy
16     filename_base, filename_ext = filename.rsplit('.', 1)
17     copyname = filename_base + '-déverrouillé.' + filename_ext
18     file(copyname, 'wb').write(file(filename, 'rb').read())
19
20     odf = zipfile.ZipFile(copyname, 'a', zipfile.ZIP_DEFLATED)
21
22     # sanity checks
23     if not odf:
24         continue # u"WARNING: skipping '%s': not a ZIP file" % filename
25     if not odf.namelist():
26         odf.close()
27         continue # u"WARNING: skipping '%s': not a ZIP file" % filename
28     if 'content.xml' not in odf.namelist() or \
29        'styles.xml' not in odf.namelist() or \
30        'settings.xml' not in odf.namelist():
31         odf.close()
32         continue # u"WARNING: skipping '%s': not an ODF file" % filename
33
34     ## content parsing
35     #modified = False
36     #content = minidom.parseString(odf.read('content.xml'))
37     ## unlock section protection
38     #for node in content.getElementsByTagName("text:section"):
39     #    if node.getAttribute("text:protected") == 'true':
40     #        node.setAttribute("text:protected", "false")
41     #        modified = True
42     ## save content changes, only if necessary
43     #if modified:
44     #    odf.getinfo("content.xml").filename = "content.old"
45     #    odf.writestr("content.xml", content.toxml().encode('utf-8'))
46
47     # settings parsing
48     modified = False
49     settings = minidom.parseString(odf.read('settings.xml'))
50     for node in settings.getElementsByTagName("config:config-item"):
51         name = node.getAttribute("config:name")
52         # unlock form protection
53         if name == 'ProtectForm' and node.data == 'true':
54             node.data = 'false'
55             modified = True
56         # unlock document editing
57         elif name == 'LoadReadonly' and node.data == 'true':
58             node.data = 'false'
59             modified = True
60     # save settings changes, only if necessary
61     if modified:
62         odf.getinfo("settings.xml").filename = "settings.old"
63         odf.writestr("settings.xml", settings.toxml().encode('utf-8'))
64
65     odf.close()
66
67 sys.exit(0)