Changeset 296 for trunk/email2trac.py.in
- Timestamp:
- 01/07/10 12:54:44 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/email2trac.py.in
r295 r296 143 143 os.umask(int(parameters['umask'], 8)) 144 144 145 if parameters.has_key('quote_attachment_filenames'):146 self.QUOTE_ATTACHMENT_FILENAMES = int(parameters['quote_attachment_filenames'])147 else:148 self.QUOTE_ATTACHMENT_FILENAMES = 1149 150 145 if parameters.has_key('debug'): 151 146 self.DEBUG = int(parameters['debug']) … … 800 795 if self.EMAIL_HEADER > 0: 801 796 head = self.email_header_txt(msg) 802 797 798 803 799 message_parts = self.get_message_parts(msg) 800 if self.DEBUG: 801 print 'TD: self.get_message_parts ', 802 print message_parts 803 804 804 message_parts = self.unique_attachment_names(message_parts) 805 if self.DEBUG: 806 print 'TD: self.unique_attachment_names', 807 print message_parts 805 808 806 809 if self.EMAIL_HEADER > 0: … … 1191 1194 1192 1195 def unique_attachment_names(self, message_parts): 1196 """ 1197 """ 1193 1198 renamed_parts = [] 1194 1199 attachment_names = set() 1200 1195 1201 for part in message_parts: 1196 1202 1197 # If not an attachment, leave it alone 1203 ## If not an attachment, leave it alone 1204 # 1198 1205 if not isinstance(part, tuple): 1199 1206 renamed_parts.append(part) … … 1201 1208 1202 1209 (filename, part) = part 1203 # Decode the filename 1204 if filename: 1205 filename = self.email_to_unicode(filename) 1206 1207 # If no name, use a default one 1208 else: 1210 1211 ## If no filename, use a default one 1212 # 1213 if not filename: 1209 1214 filename = 'untitled-part' 1210 1215 … … 1219 1224 filename = '%s%s' % (filename, ext) 1220 1225 1221 # Discard relative paths in attachment names 1222 filename = filename.replace('\\', '/').replace(':', '/') 1223 filename = os.path.basename(filename) 1224 1226 # We now use the attachment insert function 1227 # 1228 ## Discard relative paths in attachment names 1229 # 1230 #filename = filename.replace('\\', '/').replace(':', '/') 1231 #filename = os.path.basename(filename) 1232 # 1225 1233 # We try to normalize the filename to utf-8 NFC if we can. 1226 1234 # Files uploaded from OS X might be in NFD. 1227 1235 # Check python version and then try it 1228 1236 # 1229 if sys.version_info[0] > 2 or (sys.version_info[0] == 2 and sys.version_info[1] >= 3): 1230 try: 1231 filename = unicodedata.normalize('NFC', unicode(filename, 'utf-8')).encode('utf-8') 1232 except TypeError: 1233 pass 1234 1235 if self.QUOTE_ATTACHMENT_FILENAMES: 1236 try: 1237 filename = urllib.quote(filename) 1238 except KeyError, detail: 1239 filename = urllib.quote(filename.encode('utf-8')) 1237 #if sys.version_info[0] > 2 or (sys.version_info[0] == 2 and sys.version_info[1] >= 3): 1238 # try: 1239 # filename = unicodedata.normalize('NFC', unicode(filename, 'utf-8')).encode('utf-8') 1240 # except TypeError: 1241 # pass 1240 1242 1241 1243 # Make the filename unique for this ticket 1242 1244 num = 0 1243 1245 unique_filename = filename 1244 filename, ext = os.path.splitext(filename)1246 dummy_filename, ext = os.path.splitext(filename) 1245 1247 1246 1248 while unique_filename in attachment_names or self.attachment_exists(unique_filename): 1247 1249 num += 1 1248 unique_filename = "%s-%s%s" % ( filename, num, ext)1250 unique_filename = "%s-%s%s" % (dummy_filename, num, ext) 1249 1251 1250 1252 if self.DEBUG: … … 1254 1256 1255 1257 renamed_parts.append((filename, unique_filename, part)) 1256 1258 1257 1259 return renamed_parts 1258 1260 … … 1418 1420 1419 1421 att.insert(filename, fd, file_size) 1422 1420 1423 #except util.TracError, detail: 1421 1424 # print detail
Note: See TracChangeset
for help on using the changeset viewer.