Changeset 204


Ignore:
Timestamp:
05/29/08 15:51:21 (13 years ago)
Author:
bas
Message:

email2trac.py.in:

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/ChangeLog

    r203 r204  
    2222          closes request #55
    2323
     24          email2trac.conf use same format as trac.ini, eg email2trac.conf:
     25          [project]
     26          default_component : test
     27
     28          the ticket_prefix can be overriden by the commandline option:
     29           * -t,--ticket_prefix <value>
     30
     31          The feature can be used to have different settings for different
     32          email aliases
     33
     34          Requested by: greg dot deakyne at etapestry dot com
     35          Implemented by: Bas van der Vlies
     36
     37
     38        * Fixed a bug in ticket_update. It failed when project did not have
     39          ticket component field,  closes bug #62
     40          Reported by: gernot dot hillier add siemens dot com
     41          Fixed by: Bas van der Vlies
     42         
    2443        * run_email2trac.c:
    2544           - can no longer segfault after a failed malloc.
  • trunk/debian/changelog

    r195 r204  
     1email2trac (0.20-1) stable; urgency=low
     2
     3  * New version, see Changelog
     4
     5 -- root <root@rc.sara.nl>  Tue, 27 May 2008 23:12:54 +0200
     6
    17email2trac (0.13.0-1) stable; urgency=low
    28
  • trunk/email2trac.py.in

    r202 r204  
    107107trac_default_version = '0.10'
    108108m = None
    109 DRY_RUN = False
    110 
    111 
    112109
    113110# A UTC class needed for trac version 0.11, added by
     
    133130        comment = '> '
    134131   
    135         def __init__(self, env, parameters, version):
     132        def __init__(self, env, parameters, version, dry_run):
    136133                self.env = env
    137134
     
    147144
    148145                self.VERSION = version
     146                self.DRY_RUN = dry_run
     147
    149148                self.get_config = self.env.config.get
    150149
     
    260259                                print 'This message is a SPAM. Automatic ticket insertion refused (SPAM level > %d' % self.SPAM_LEVEL
    261260
    262                         return True     
     261                        return 'drop'   
    263262
    264263                elif spam:
    265264
    266                         return 'Spam'
    267 
    268                 else:
    269 
    270                         return self.get_config('ticket', 'default_component')
     265                        return 'Spam'   
     266
     267                else:
     268
     269                        return False
    271270
    272271
     
    530529                                        print  'ticket_field\t %s = %s' %(field,  ticket[field])
    531530                                       
    532         def ticket_update(self, m):
     531        def ticket_update(self, m, spam):
    533532                """
    534533                If the current email is a reply to an existing ticket, this function
     
    536535                creating a new one.
    537536                """
    538                 global DRY_RUN
    539537
    540538                if not m['Subject']:
     
    609607                        str = self.attachments(m, tkt)
    610608
    611                 if self.notification:
     609                if self.notification and not spam:
    612610                        self.notify(tkt, False, when)
    613611
     
    654652
    655653
    656         def new_ticket(self, msg):
     654        def new_ticket(self, msg, spam):
    657655                """
    658656                Create a new ticket
     
    673671                # Old style setting for component, will be removed
    674672                #
    675                 if settings.has_key('component'):
     673                if spam:
     674                        tkt['component'] = 'Spam'
     675
     676                elif settings.has_key('component'):
    676677                        tkt['component'] = settings['component']
    677678
     
    700701                when = datetime.now(utc)
    701702
    702                 if DRY_RUN:
     703                if self.DRY_RUN:
    703704                        ticket_id = 'DRY_RUN'
    704705                else:
     
    725726
    726727                if changed:
    727                         if DRY_RUN:
     728                        if self.DRY_RUN:
    728729                                print 'DRY_RUN: tkt.save_changes(self.author, comment)'
    729730                        else:
     
    732733
    733734                if self.notification:
    734                         if DRY_RUN:
     735                        if self.DRY_RUN:
    735736                                print 'DRY_RUN: self.notify(tkt, True)'
    736737                        else:
    737                                 self.notify(tkt, True)
     738                                if not spam:
     739                                        self.notify(tkt, True)
    738740                                #self.notify(tkt, False)
    739741
     
    757759                        return False
    758760
    759             # If component is true then we drop the message drop message
    760                 #
    761                 if self.spam(m) == True:
     761                # If drop the message
     762                #
     763                if self.spam(m) == 'drop':
    762764                        return False
    763765
     766                elif self.spam(m) == 'spam':
     767                        spam_msg = True
     768
     769                else:
     770                        spam_msg = False
    764771
    765772                if self.get_config('notification', 'smtp_enabled') in ['true']:
     
    771778                #
    772779                if self.TICKET_UPDATE > 0:
    773                         if self.ticket_update(m):
     780                        if self.ticket_update(m, spam_msg):
    774781                                return True
    775782
    776                 self.new_ticket(m)
     783                self.new_ticket(m, spam_msg)
    777784
    778785        def strip_signature(self, text):
     
    905912                A wrapper for the TRAC notify function. So we can use templates
    906913                """
    907                 if tkt['component'] == 'Spam':
    908                         return 
    909 
    910914                try:
    911915                        # create false {abs_}href properties, to trick Notify()
     
    10971101        # Default config file
    10981102        #
    1099         global DRY_RUN
    1100 
    11011103        configfile = '@email2trac_conf@'
    11021104        project = ''
    11031105        component = ''
    11041106        ticket_prefix = 'default'
     1107        dry_run = None
    11051108
    11061109        ENABLE_SYSLOG = 0
     1110
    11071111
    11081112        SHORT_OPT = 'chf:np:t:'
     
    11261130                        configfile = value
    11271131                elif opt in ['-n', '--dry-run']:
    1128                         DRY_RUN = True
     1132                        dry_run = True
    11291133                elif opt in ['-p', '--project']:
    11301134                        project_name = value
     
    11951199
    11961200                env = Environment(settings['project'], create=0)
    1197                 tktparser = TicketEmailParser(env, settings, float(version))
     1201                tktparser = TicketEmailParser(env, settings, float(version), dry_run)
    11981202                tktparser.parse(sys.stdin)
    11991203
Note: See TracChangeset for help on using the changeset viewer.