From: neaj Date: Mon, 23 Jun 2003 08:37:15 +0000 (+0000) Subject: Made subject_re an attribute of MailGW, so that it can be easily X-Git-Url: https://git.tokkee.org/?a=commitdiff_plain;h=e5c8e640d4707202d0c9c762cebc6d7d574597b6;p=roundup.git Made subject_re an attribute of MailGW, so that it can be easily overridden in an instance's interfaces.MailGW, and wrote subject_re as a re.VERBOSE, with a couple of comments. git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@1746 57a73879-2fb5-44c3-a270-3262357dd7e2 --- diff --git a/roundup/mailgw.py b/roundup/mailgw.py index 1e24485..eee37cb 100644 --- a/roundup/mailgw.py +++ b/roundup/mailgw.py @@ -73,7 +73,7 @@ are calling the create() method to create a new node). If an auditor raises an exception, the original message is bounced back to the sender with the explanatory message given in the exception. -$Id: mailgw.py,v 1.123 2003-06-18 23:34:52 richard Exp $ +$Id: mailgw.py,v 1.124 2003-06-23 08:37:15 neaj Exp $ ''' import string, re, os, mimetools, cStringIO, smtplib, socket, binascii, quopri @@ -188,11 +188,21 @@ class Message(mimetools.Message): hdr = mimetools.Message.getheader(self, name, default) return rfc2822.decode_header(hdr) -subject_re = re.compile(r'(?P\s*\W?\s*(fw|fwd|re|aw)\W\s*)*' - r'\s*(?P")?(\[(?P[^\d\s]+)(?P\d+)?\])?' - r'\s*(?P[^[]+)?"?(\[(?P<args>.+?)\])?', re.I) - class MailGW: + + # Matches subjects like: + # Re: "[issue1234] title of issue [status=resolved]" + subject_re = re.compile(r''' + (?P<refwd>\s*\W?\s*(fw|fwd|re|aw)\W\s*)*\s* # Re: + (?P<quote>")? # Leading " + (\[(?P<classname>[^\d\s]+) # [issue.. + (?P<nodeid>\d+)? # ..1234] + \])?\s* + (?P<title>[^[]+)? # issue title + "? # Trailing " + (\[(?P<args>.+?)\])? # [prop=value] + ''', re.IGNORECASE|re.VERBOSE) + def __init__(self, instance, db, arguments={}): self.instance = instance self.db = db @@ -495,7 +505,7 @@ Emails to Roundup trackers must include a Subject: line! if subject.strip().lower() == 'help': raise MailUsageHelp - m = subject_re.match(subject) + m = self.subject_re.match(subject) # check for well-formed subject line if m: