Changeset 404


Ignore:
Timestamp:
07/16/10 15:21:40 (14 years ago)
Author:
bas
Message:

email2trac.py.in:

  • used the SaraDict? class so we can use class attributes as dict values, eg:

b[k] = v is the same as b.k = v

  • some more logging code added




File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/email2trac.py.in

    r403 r404  
    7575import logging
    7676import logging.handlers
     77import UserDict
    7778
    7879
     
    112113                return self.ZERO
    113114
     115class SaraDict(UserDict.UserDict):
     116        def __init__(self, dictin = None):
     117                UserDict.UserDict.__init__(self)
     118                self.name = None
     119               
     120                if dictin:
     121                        if dictin.has_key('name'):
     122                                self.name = dictin['name']
     123                                del dictin['name']
     124                        self.data = dictin
     125                       
     126        def get_value(self, key):
     127                if self.has_key(key):
     128                        return self[key]
     129                else:
     130                        return None
     131                               
     132        def __repr__(self):
     133                return repr(self.data)
     134
     135        def __str__(self):
     136                return str(self.data)
     137                       
     138        def __getattr__(self, name):
     139                """
     140                override the class attribute get method. Return the value
     141                from the Userdict
     142                """
     143                if self.data.has_key(name):
     144                        return self.data[name]
     145                else:
     146                        return None
     147                       
     148        def __setattr__(self, name, value):
     149                """
     150                override the class attribute set method only when the UserDict
     151                has set its class attribute
     152                """
     153                if self.__dict__.has_key('data'):
     154                        self.data[name] = value
     155                else:
     156                        self.__dict__[name] = value
     157
     158        def __iter__(self):
     159                return iter(self.data.keys())
    114160
    115161class TicketEmailParser(object):
     
    140186                self.VERSION = version
    141187
     188                self.get_config = self.env.config.get
     189
    142190                self.setup_log()
    143191                self.setup_parameters()
     
    146194                self.VERBOSE = parameters['verbose']
    147195
    148                 self.get_config = self.env.config.get
    149 
    150 
    151         def setup_log():
     196
     197
     198        def setup_log(self):
    152199                """
    153200                Setup loging
     
    157204
    158205                """
    159                 if not parameters.log_type:
    160                         paramters.log_type = 'syslog'
    161 
    162                 if parameters.log_type = 'file'
     206                if not self.parameters.log_type:
     207                        self.parameters.log_type = 'syslog'
     208
     209                if self.parameters.log_type == 'file':
    163210                        if not os.path.isabs(parameters.log_file):
    164                                 parameters.log_file = os.path.jpin(self.env.path. 'log')
     211                                self.parameters.log_file = os.path.join(self.env.path, 'log')
    165212                        hdlr = logging.FileHandler()
    166213
    167                 elif parameters.log_type in ('winlog', 'eventlog', 'nteventlog'):
     214                elif self.parameters.log_type in ('winlog', 'eventlog', 'nteventlog'):
    168215                        # Requires win32 extensions
    169216                        hdlr = logging.handlers.NTEventLogHandler(logid, logtype='Application')
    170217
    171                 elif parameters.log_type in ('syslog', 'unix'):
     218                elif self.parameters.log_type in ('syslog', 'unix'):
    172219                        hdlr = logging.handlers.SysLogHandler('/dev/log')
    173220
    174                 elif parameters.log_type in ('stderr'):
     221                elif self.parameters.log_type in ('stderr'):
    175222                        hdlr = logging.StreamHandler(sys.stderr)
    176223
     
    178225                        hdlr = logging.handlers.BufferingHandler(0)
    179226
    180                 if parameters.format:
    181                         parameters.format = parameters.format.replace('$(', '%(')
    182                 else:
    183                         parameters.format = 'Email2trac: %(message)s'
     227                if self.parameters.log_format:
     228                        self.parameters['log_format'] = self.parameters.log_format.replace('$(', '%(')
     229                else:
     230                        self.parameters.log_format = 'Email2trac: %(message)s'
    184231
    185232
     
    189236               
    190237
    191         def setup_parameters():
     238        def setup_parameters(self):
    192239                if self.parameters.has_key('umask'):
    193240                        os.umask(int(self.parameters['umask'], 8))
     
    21372184                        sys.exit(1)
    21382185
    2139                 project =  dict()
     2186                project =  SaraDict()
    21402187                for option, value in  config.options(name):
    21412188                        project[option] = value
     
    21442191                # use some trac internals to get the defaults
    21452192                #
    2146                 project = config.parser.defaults()
     2193                tmp = config.parser.defaults()
     2194                project =  SaraDict()
     2195
     2196                for option,value in tmp.items():
     2197                        project[option] = value
    21472198
    21482199        return project
Note: See TracChangeset for help on using the changeset viewer.