Show
Ignore:
Timestamp:
11/09/07 04:38:51 (1 year ago)
Author:
amcgregor
Message:

More large-scale updates to the 3.0 branch.

Files:
1 modified

Legend:

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

    r68 r71  
    77in your own applications:: 
    88 
    9   import turbomail 
    10   turbomail.interface.start() 
     9  from turbomail.message import Message 
     10  from turbomail.control import interface 
     11  interface.start() 
    1112   
    12   message = turbomail.Message(...) 
    13   turbomail.send(message) 
     13  message = Message(...) 
     14  interface.send(message) 
    1415   
    15   turbomail.interface.stop() 
     16  interface.stop() 
    1617 
    1718TurboMail will, by default, immediately delete any messages remaining in 
     
    2526log = logging.getLogger("turbomail.control") 
    2627 
    27 import turbomail 
    2828import pkg_resources 
    2929 
     
    4040                self.running = False 
    4141                self.extensions = dict() 
     42                self.config = dict() 
     43                self.manager = None 
     44                self.provider = None 
    4245                 
    43                 try: 
    44                         import turbogears 
    45                          
    46                         turbogears.config.update(turbomail.config) 
    47                         turbomail.config = turbogears.config 
    48                         self.start_extension = self.start 
    49                         self.shutdown_extension = self.stop 
    50                  
    51                 except ImportError: 
    52                         pass 
    53                  
    54                 except AttributeError: 
    55                         pass 
    56          
    57         def load_single_entry(self, group, name): 
     46        def __load_single_entry(self, group, name): 
    5847                for entrypoint in pkg_resources.iter_entry_points(group, name): 
    5948                        return entrypoint.load() 
     
    6150         
    6251        def start(self): 
    63                 try: 
    64                         import turbogears 
    65                 except ImportError: 
    66                         pass 
    67                 else: 
    68                         turbomail.config = turbogears.config 
    69                  
    70                 if not turbomail.config.get("mail.on", False): 
     52                if not self.config.get("mail.on", False): 
    7153                        return 
    7254                 
     
    7456                 
    7557                def load(t, default): 
    76                         extension = turbomail.config.get("mail.%s" % t, default) 
    77                         controller = self.load_single_entry("turbomail.%ss" % t, extension) 
     58                        extension = self.config.get("mail.%s" % t, default) 
     59                        controller = self.__load_single_entry("turbomail.%ss" % t, extension) 
    7860                        if not controller: 
    79                                 turbomail.config.update({"mail.on": False}) 
     61                                self.config.update({"mail.on": False}) 
    8062                                log.error("Unable to locate %s %s, TurboMail disabled." % (extension, t)) 
    8163                                self.stop(force=True) 
    8264                                return 
    83                         setattr(turbomail, t, controller.load()) 
     65                        setattr(self, t, controller.load()) 
    8466                        controller.start() 
    8567                 
     
    9274                for entrypoint in extensions: 
    9375                        log.debug("Found extension '%s'." % entrypoint.name) 
    94                         if turbomail.config.get("mail.%s.on" % entrypoint.name, False): 
     76                         
     77                        if self.config.get("mail.%s.on" % entrypoint.name, False): 
    9578                                log.info("Loading extension '%s'." % entrypoint.name) 
     79                                 
    9680                                self.extensions[entrypoint.name] = entrypoint.load() 
    9781                                 
    98                                 if hasattr(self.extensions[entrypoint.name], 'load'): 
     82                                if hasattr(self.extensions[entrypoint.name], 'interface'): 
     83                                        self.extensions[entrypoint.name] = self.extensions[entrypoint.name].interface 
     84                                 
     85                                elif hasattr(self.extensions[entrypoint.name], 'load'): 
    9986                                        self.extensions[entrypoint.name] = self.extensions[entrypoint.name].load() 
    10087                                 
     
    11299                extensions = pkg_resources.iter_entry_points("turbomail.extensions") 
    113100                for entrypoint in extensions: 
    114                         if turbomail.config.get("mail." + entrypoint.name + ".on", False): 
     101                        if self.config.get("mail." + entrypoint.name + ".on", False): 
    115102                                ext = entrypoint.load() 
    116103                                if hasattr(ext, "stop"): ext.stop() 
    117104                 
    118105                # Unload the provider and manager. 
    119                 if turbomail.provider and hasattr(turbomail.provider, "stop"): turbomail.provider.stop() 
    120                 if turbomail.manager and hasattr(turbomail.manager, "stop"): turbomail.manager.stop() 
     106                if self.provider and hasattr(self.provider, "stop"): self.provider.stop() 
     107                if self.manager and hasattr(self.manager, "stop"): self.manager.stop() 
    121108                 
    122                 turbomail.provider = None 
    123                 turbomail.manager = None 
     109                self.provider = None 
     110                self.manager = None 
    124111                 
    125112                self.running = False 
     113         
     114        def send(self, message): 
     115                if not self.manager: 
     116                        raise MailNotEnabledError 
     117 
     118                return self.manager.deliver(message) 
     119                 
    126120 
    127121