Changeset 194 for trunk/email2trac.py.in
- Timestamp:
- 02/04/08 11:27:22 (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/email2trac.py.in
r193 r194 230 230 self.TMPDIR = os.path.normcase(str(parameters['tmpdir'])) 231 231 232 if parameters.has_key('ignore_trac_user_settings'): 233 self.IGNORE_TRAC_USER_SETTINGS = int(parameters['ignore_trac_user_settings']) 234 else: 235 self.IGNORE_TRAC_USER_SETTINGS = 0 232 236 233 237 def spam(self, message): … … 236 240 # Note if Spam_level then '*' are included 237 241 """ 242 spam = False 238 243 if message.has_key('X-Spam-Score'): 239 244 spam_l = string.split(message['X-Spam-Score']) … … 241 246 242 247 if number >= self.SPAM_LEVEL: 243 return 'Spam'244 248 spam = True 249 245 250 # treat virus mails as spam 246 251 # 247 252 elif message.has_key('X-Virus-found'): 253 spam = True 254 255 # How to handle SPAM messages 256 # 257 if self.DROP_SPAM and spam: 258 if self.DEBUG > 2 : 259 print 'This message is a SPAM. Automatic ticket insertion refused (SPAM level > %d' % self.SPAM_LEVEL 260 261 return True 262 263 elif spam: 264 248 265 return 'Spam' 249 266 250 return self.get_config('ticket', 'default_component') 267 else: 268 269 return self.get_config('ticket', 'default_component') 251 270 252 271 … … 254 273 FROM_RE = re.compile(r""" 255 274 MAILER-DAEMON@ 256 """, re.VERBOSE )275 """, re.VERBOSE|re.IGNORECASE) 257 276 result = FROM_RE.search(self.email_addr) 258 277 if result: … … 353 372 ticket['owner'] = None 354 373 355 def get_ author_emailaddrs(self, message):374 def get_sender_info(self, message): 356 375 """ 357 376 Get the default author name and email address from the message 358 377 """ 359 temp = self.email_to_unicode(message['from']) 360 #print temp.encode('utf-8') 361 362 self.author, self.email_addr = email.Utils.parseaddr(temp) 363 #print self.author.encode('utf-8', 'replace') 364 365 # Look for email address in registered trac users 366 # 367 users = [ u for (u, n, e) in self.env.get_known_users(self.db) 378 379 self.email_from = self.email_to_unicode(message['from']) 380 self.author, self.email_addr = email.Utils.parseaddr(self.email_from) 381 382 # Maybe for later user 383 #self.email_from = self.email_to_unicode(self.email_addr) 384 385 386 if self.IGNORE_TRAC_USER_SETTINGS: 387 return 388 389 # Is this a registered user, use email address as search key: 390 # result: 391 # u : login name 392 # n : Name that the user has set in the settings tab 393 # e : email address that the user has set in the settings tab 394 # 395 users = [ (u,n,e) for (u, n, e) in self.env.get_known_users(self.db) 368 396 if e == self.email_addr ] 369 397 370 398 if len(users) == 1: 371 self.email_from = users[0] 372 else: 373 self.email_from = self.email_to_unicode(message['from']) 374 #self.email_from = self.email_to_unicode(self.email_addr) 399 self.email_from = users[0][0] 375 400 376 401 def set_reply_fields(self, ticket, message): … … 513 538 TICKET_RE = re.compile(r""" 514 539 (?P<ticketnr>[#][0-9]+:) 515 |(?P<ticketnr_fields>[#][\d]+\?.* :)540 |(?P<ticketnr_fields>[#][\d]+\?.*?:) 516 541 """, re.VERBOSE) 517 542 … … 538 563 539 564 540 # Get current time 541 # to do 542 #when = int(time.time()) 543 # 544 utc = UTC() 545 when = datetime.now(utc) 565 # When is the change committed 566 # 567 # 568 if self.VERSION == 0.11: 569 utc = UTC() 570 when = datetime.now(utc) 571 else: 572 when = int(time.time()) 546 573 547 574 try: … … 577 604 return True 578 605 579 def new_ticket(self, msg ):606 def new_ticket(self, msg, component): 580 607 """ 581 608 Create a new ticket … … 596 623 tkt['summary'] = self.email_to_unicode(msg['Subject']) 597 624 598 599 625 if settings.has_key('component'): 600 626 tkt['component'] = settings['component'] 601 627 else: 602 tkt['component'] = self.spam(msg) 603 604 # Discard SPAM messages. 605 # 606 if self.DROP_SPAM and (tkt['component'] == 'Spam'): 607 if self.DEBUG > 2 : 608 print 'This message is a SPAM. Automatic ticket insertion refused (SPAM level > %d' % self.SPAM_LEVEL 609 return False 628 tkt['component'] = component 610 629 611 630 # Set default owner for component, HvB … … 680 699 681 700 self.db = self.env.get_db_cnx() 682 self.get_ author_emailaddrs(m)701 self.get_sender_info(m) 683 702 684 703 if self.blacklisted_from(): … … 687 706 return False 688 707 708 # If component is true then we drop the message drop message 709 # 710 component = self.spam(m) 711 if component == True: 712 return False 713 714 689 715 if self.get_config('notification', 'smtp_enabled') in ['true']: 690 716 self.notification = 1 … … 698 724 return True 699 725 700 self.new_ticket(m )726 self.new_ticket(m, component) 701 727 702 728 def strip_signature(self, text):
Note: See TracChangeset
for help on using the changeset viewer.