summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvoisin2011-07-24 22:52:02 +0200
committerjvoisin2011-07-24 22:52:02 +0200
commitac248b5b4979aafa0c05f8253e2f9e1bdba305e6 (patch)
tree52fad93725b66292e63711a2dc3ac9303063386e
parent5bcc33f6d7b5267ff06f610920abe8ae3bfaeb37 (diff)
Office.py use tempfile too now
-rw-r--r--lib/office.py43
1 files changed, 16 insertions, 27 deletions
diff --git a/lib/office.py b/lib/office.py
index 5d62732..f87f357 100644
--- a/lib/office.py
+++ b/lib/office.py
@@ -20,15 +20,6 @@ class OpenDocumentStripper(archive.GenericArchiveStripper):
20 The one that interest us is meta.xml 20 The one that interest us is meta.xml
21 ''' 21 '''
22 22
23 def remove_folder(self, folder_list):
24 for folder in folder_list:
25 dirname = folder.split('/')[0]
26 try:
27 shutil.rmtree(dirname)
28 except:#Some folder or open document format are buggies
29 pass
30 self.folder_list = []
31
32 def _remove_all(self, method): 23 def _remove_all(self, method):
33 ''' 24 '''
34 FIXME ? 25 FIXME ?
@@ -38,25 +29,24 @@ class OpenDocumentStripper(archive.GenericArchiveStripper):
38 zipin = zipfile.ZipFile(self.filename, 'r') 29 zipin = zipfile.ZipFile(self.filename, 'r')
39 zipout = zipfile.ZipFile(self.filename + parser.POSTFIX, 'w', 30 zipout = zipfile.ZipFile(self.filename + parser.POSTFIX, 'w',
40 allowZip64=True) 31 allowZip64=True)
41 folder_list = []
42 for item in zipin.namelist(): 32 for item in zipin.namelist():
43 if os.path.basename(item) is not item:#add folders to folder_list 33 name = os.path.join(self.tempdir, item)
44 folder_list.insert(0, os.path.dirname(item)) 34 if item.endswith('.xml') or item == 'mimetype':
45 if item.endswith('.xml') or item.startswith('manifest'): 35 #keep .xml files, and the "manifest" file
46 if item != 'meta.xml':#contains the metadata 36 if item != 'meta.xml':#contains the metadata
47 zipin.extract(item) 37 zipin.extract(item, self.tempdir)
48 zipout.write(item) 38 zipout.write(name, item)
49 mat.secure_remove(item) 39 mat.secure_remove(name)
50 elif item == 'mimetype': 40 elif item.endswith('manifest.xml'):
51 zipin.extract(item) 41 zipin.extract(item, self.tempdir)
52 #remove line meta.xml 42 #remove line meta.xml
53 zipout.write(item) 43 zipout.write(name, item)
54 mat.secure_remove(item) 44 mat.secure_remove(name)
55 else: 45 else:
56 zipin.extract(item) 46 zipin.extract(item, self.tempdir)
57 if os.path.isfile(item): 47 if os.path.isfile(name):
58 try: 48 try:
59 cfile = mat.create_class_file(item, False, 49 cfile = mat.create_class_file(name, False,
60 self.add2archive) 50 self.add2archive)
61 if method == 'normal': 51 if method == 'normal':
62 cfile.remove_all() 52 cfile.remove_all()
@@ -64,18 +54,17 @@ class OpenDocumentStripper(archive.GenericArchiveStripper):
64 cfile.remove_all_ugly() 54 cfile.remove_all_ugly()
65 logging.debug('Processing %s from %s' % (item, 55 logging.debug('Processing %s from %s' % (item,
66 self.filename)) 56 self.filename))
67 zipout.write(item) 57 zipout.write(name, item)
68 except: 58 except:
69 logging.info('%s\' fileformat is not supported' % 59 logging.info('%s\' fileformat is not supported' %
70 item) 60 item)
71 if self.add2archive: 61 if self.add2archive:
72 zipout.write(item) 62 zipout.write(item, name)
73 mat.secure_remove(item) 63 mat.secure_remove(name)
74 zipout.comment = '' 64 zipout.comment = ''
75 logging.info('%s treated' % self.filename) 65 logging.info('%s treated' % self.filename)
76 zipin.close() 66 zipin.close()
77 zipout.close() 67 zipout.close()
78 self.remove_folder(folder_list)
79 68
80 if self.backup is False: 69 if self.backup is False:
81 mat.secure_remove(self.filename) #remove the old file 70 mat.secure_remove(self.filename) #remove the old file