Changeset 262 for trunk/email2trac.py.in


Ignore:
Timestamp:
04/08/09 16:47:40 (15 years ago)
Author:
bas
Message:

closes #130

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/email2trac.py.in

    r260 r262  
    525525                Transfrom a str of the form [<key>=<value>]+ to dict[<key>] = <value>
    526526                """
    527                 # Skip the last ':' character
    528                 #
    529                 fields = string.split(str[:-1], ',')
     527
     528                fields = string.split(str, ',')
    530529
    531530                result = dict()
    532531                for field in fields:
    533532                        try:
    534                                 index, value = string.split(field,'=')
     533                                index, value = string.split(field, '=')
    535534
    536535                                # We can not change the description of a ticket via the subject
     
    619618                try:
    620619                        id, keywords = string.split(id, '?')
     620
     621                        # Skip the last ':' character
     622                        #
     623                        keywords = keywords[:-1]
    621624                        update_fields = self.str_to_dict(keywords)
    622625
     
    766769
    767770
    768         def new_ticket(self, msg, spam):
     771        def new_ticket(self, msg, subject, spam, set_fields = None):
    769772                """
    770773                Create a new ticket
     
    787790                        tkt['summary'] = u'(No subject)'
    788791                else:
    789                         tkt['summary'] = self.email_to_unicode(msg['Subject'])
     792                        tkt['summary'] = self.email_to_unicode(subject)
    790793
    791794                self.set_reply_fields(tkt, msg)
     795
     796                if set_fields:
     797                        rest, keywords = string.split(set_fields, '?')
     798
     799                        if keywords:
     800                                update_fields = self.str_to_dict(keywords)
     801                                self.update_ticket_fields(tkt, update_fields)
    792802
    793803                # produce e-mail like header
     
    936946                        self.notification = 0
    937947
    938                 print self.get_config('components', 'tracext.google.ads.*')
    939 
    940948                # Check if  FullBlogPlugin is installed
    941949                #
     
    956964                TICKET_RE = re.compile(r"""
    957965                        (?P<blog>blog:(?P<blog_id>\w*))
    958                         |(?P<ticket_id>[#][\d]+:)
    959                         |(?P<ticket_fields>[#][\d]+\?.*?:)
     966                        |(?P<new_fields>[#][?].*)
     967                        |(?P<reply>[#][\d]+:)
     968                        |(?P<reply_fields>[#][\d]+\?.*?:)
    960969                        """, re.VERBOSE)
    961970
     
    968977                        # update ticket + fields
    969978                        #
    970                         if result.group('ticket_fields') and self.TICKET_UPDATE:
    971                                 self.ticket_update(m, result.group('ticket_fields'), spam_msg)
     979                        if result.group('reply_fields') and self.TICKET_UPDATE:
     980                                self.ticket_update(m, result.group('reply_fields'), spam_msg)
    972981
    973982                        # Update ticket
    974983                        #
    975                         elif result.group('ticket_id') and self.TICKET_UPDATE:
    976                                 self.ticket_update(m, result.group('ticket_id'), spam_msg)
     984                        elif result.group('reply') and self.TICKET_UPDATE:
     985                                self.ticket_update(m, result.group('reply'), spam_msg)
     986
     987                        # New ticket + fields
     988                        #
     989                        elif result.group('new_fields'):
     990                                self.new_ticket(m, subject[:result.start('new_fields')], spam_msg, result.group('new_fields'))
    977991
    978992                # Create ticket
    979993                #
    980994                else:
    981                         self.new_ticket(m, spam_msg)
     995                        self.new_ticket(m, subject, spam_msg)
    982996
    983997        def strip_signature(self, text):
Note: See TracChangeset for help on using the changeset viewer.