Changeset 296
- Timestamp:
- 01/07/10 12:54:44 (14 years ago)
- Location:
- trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/debian/changelog
r295 r296 33 33 Authors: otto at bergerdata dot de and Bas van der Vlies 34 34 35 * FIxed an error when files where added with characters that needed to be 36 escaped. Both email2trac and trac escaped the filenames. We removed the 37 code from email2trac an let trac handle the escaping, closes #149 38 39 Reported by: hju att jochenkuhl dot de 40 Fixed by: Bas van der Vlies 41 35 42 -- Bas van der Vlies <bas@sara.nl> Thu, 22 Oct 2009 17:47:50 +0200 36 43 -
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.