Show
Ignore:
Timestamp:
10/18/07 01:15:41 (1 year ago)
Author:
amcgregor
Message:

Lots of changes. Minor updates to the Message class, created the immediate manager and the debug provider, and created a sample extension, utf8qp.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • branches/3.0/turbomail/control.py

    r37 r40  
    2424 
    2525import turbomail 
     26import pkg_resources 
    2627 
    2728__all__ = ['extension'] 
     
    4647                        self.shutdown_extension = self.stop 
    4748         
    48         def load_single_entry(group, name): 
    49                 for entrypoint in pkg_resources.iter_entry_points("turbogears.command"): 
    50                         if entrypoint.name == name: 
    51                                 return entrypoint.load() 
     49        def load_single_entry(self, group, name): 
     50                for entrypoint in pkg_resources.iter_entry_points(group, name): 
     51                        return entrypoint.load() 
    5252                return None 
    5353         
    5454        def start(self): 
    55                 """TurboGears extension startup. 
    56  
    57                 Exits immediately if TurboMail is not enabled and creates a MailPool 
    58                 instance if all is well. 
    59                 """ 
     55                try: 
     56                        import turbogears 
     57                except ImportError: 
     58                        pass 
     59                else: 
     60                        turbomail.config = turbogears.config 
    6061                 
    6162                if not turbomail.config.get("mail.on", False): 
     
    6566                 
    6667                # Load the requested pool manager. 
    67                 manager = turbomail.config.get("mail.manager", "demand") 
    68                 turbomail.manager = self.load_single_entry("turbomail.managers", manager) 
     68                manager = turbomail.config.get("mail.manager", "immediate") 
     69                turbomail.manager = self.load_single_entry("turbomail.managers", manager).load() 
    6970                if not turbomail.manager: 
    7071                        turbomail.config.set("mail.on", False) 
     
    7475                 
    7576                # Load the requested mail provider. 
    76                 provider = turbomail.config.get("mail.provider", "smtp") 
    77                 turbomail.provider = self.load_single_entry("turbomail.providers", provider) 
     77                provider = turbomail.config.get("mail.provider", "debug") 
     78                turbomail.provider = self.load_single_entry("turbomail.providers", provider).load() 
    7879                if not turbomail.provider: 
    7980                        turbomail.config.set("mail.on", False) 
     
    8283                turbomail.provider.start() 
    8384                 
    84                 # Override the UTF-8 character set to use the quoted printable encoding. 
    85                 if turbomail.config.get("mail.default.encoding", "us-ascii") == "utf-8-qp": 
    86                         Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8') 
    87                         turbomail.config.update({"mail.default.encoding": "utf-8"}) 
    88                  
    8985                # Load and initalize the various extensions. 
    9086                extensions = pkg_resources.iter_entry_points("turbomail.extensions") 
    9187                for entrypoint in extensions: 
    92                         ext = entrypoint.load() 
    93                         if hasattr(ext, "start"): 
    94                                 ext.start() 
     88                        log.debug("Found extension '%s'." % entrypoint.name) 
     89                        if turbomail.config.get("mail." + entrypoint.name + ".on", False): 
     90                                log.debug("Loading extension '%s'." % entrypoint.name) 
     91                                ext = entrypoint.load() 
     92                                if hasattr(ext, "start"): ext.start() 
    9593                 
    9694                self.running = True 
    9795         
    9896        def stop(self): 
    99                 """TurboGears extension shutdown. 
    100  
    101                 Exits immediately if TurboMail is not enabled and shuts down the 
    102                 MailPool object safely. 
    103                 """ 
    104  
    10597                if not self.running: return 
    10698                 
     
    110102                extensions = pkg_resources.iter_entry_points("turbomail.extensions") 
    111103                for entrypoint in extensions: 
    112                         ext = entrypoint.load() 
    113                         if hasattr(ext, "unload"): 
    114                                 ext.unload() 
     104                        if turbomail.config.get("mail." + entrypoint.name + ".on", False): 
     105                                ext = entrypoint.load() 
     106                                if hasattr(ext, "unload"): ext.unload() 
    115107                 
    116108                # Unload the provider and manager.