summaryrefslogtreecommitdiff
path: root/lib/archive.py
diff options
context:
space:
mode:
authorjvoisin2011-07-17 17:15:05 +0200
committerjvoisin2011-07-17 17:15:05 +0200
commita801dac55f954a983db2c2daa57fbbf5c5a241f3 (patch)
treed1cd64311ce3acd54d17864de4177d53070e579d /lib/archive.py
parentbdb6c570e4744e635caa69c8c2b9794ddb3a0b97 (diff)
Fix the "remaining folder" bug for archives
Diffstat (limited to 'lib/archive.py')
-rw-r--r--lib/archive.py20
1 files changed, 13 insertions, 7 deletions
diff --git a/lib/archive.py b/lib/archive.py
index 7e928f0..8fa826e 100644
--- a/lib/archive.py
+++ b/lib/archive.py
@@ -4,12 +4,15 @@ import parser
4import mat 4import mat
5import shutil 5import shutil
6import os 6import os
7import mimetypes
7 8
8class TarStripper(parser.Generic_parser): 9class TarStripper(parser.Generic_parser):
9 def __init__(self, realname, filename, parser, editor, backup): 10 def __init__(self, realname, filename, parser, editor, backup):
10 super(TarStripper, self).__init__(realname, 11 super(TarStripper, self).__init__(realname,
11 filename, parser, editor, backup) 12 filename, parser, editor, backup)
12 self.compression = '' 13 self.compression = ''
14 self.shortname = os.path.basename(filename)
15 self.mime = mimetypes.guess_type(filename)[0]
13 self.tarin = tarfile.open(self.filename, 'r' + self.compression) 16 self.tarin = tarfile.open(self.filename, 'r' + self.compression)
14 self.folder_list = [] 17 self.folder_list = []
15 18
@@ -40,9 +43,9 @@ class TarStripper(parser.Generic_parser):
40 self.folder_list.insert(0, current_file.name) 43 self.folder_list.insert(0, current_file.name)
41 self.tarin.close() 44 self.tarin.close()
42 self.tarout.close() 45 self.tarout.close()
46 print self.folder_list
43 47
44 for folder in self.folder_list: #delete remainings folders 48 self.remove_folder()
45 shutil.rmtree(folder)
46 49
47 if self.backup is False: 50 if self.backup is False:
48 mat.secure_remove(self.filename) 51 mat.secure_remove(self.filename)
@@ -73,7 +76,8 @@ class TarStripper(parser.Generic_parser):
73 #no backup file 76 #no backup file
74 class_file = mat.create_class_file(current_file.name, False) 77 class_file = mat.create_class_file(current_file.name, False)
75 if not class_file.is_clean(): 78 if not class_file.is_clean():
76 self.folder_list = [] 79 mat.secure_remove(current_file.name)
80 self.remove_folder()
77 return False 81 return False
78 if not self.is_file_clean(current_file): 82 if not self.is_file_clean(current_file):
79 return False 83 return False
@@ -81,10 +85,7 @@ class TarStripper(parser.Generic_parser):
81 else: 85 else:
82 self.folder_list.insert(0, current_file.name) 86 self.folder_list.insert(0, current_file.name)
83 self.tarin.close() 87 self.tarin.close()
84 88 self.remove_folder()
85 for folder in self.folder_list: #delete remainings folders
86 shutil.rmtree(folder)
87 self.folder_list = []
88 return True 89 return True
89 90
90 def get_meta(self): 91 def get_meta(self):
@@ -102,6 +103,11 @@ class TarStripper(parser.Generic_parser):
102 metadata[current_file.name] = current_meta 103 metadata[current_file.name] = current_meta
103 return metadata 104 return metadata
104 105
106 def remove_folder(self):
107 for folder in self.folder_list: #delete remainings folders
108 shutil.rmtree(folder)
109 self.folder_list = []
110
105class GzipStripper(TarStripper): 111class GzipStripper(TarStripper):
106 def __init__(self, realname, filename, parser, editor, backup): 112 def __init__(self, realname, filename, parser, editor, backup):
107 super(GzipStripper, self).__init__(realname, 113 super(GzipStripper, self).__init__(realname,