Show
Ignore:
Timestamp:
11/07/07 01:14:41 (1 year ago)
Author:
amcgregor
Message:

Modified extension loading behaviour.

Files:
1 modified

Legend:

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

    r52 r65  
    2020""" 
    2121 
     22__version__ = "$Revision: 1 $" 
     23 
    2224import logging 
    2325log = logging.getLogger("turbomail.control") 
     
    3739        def __init__(self): 
    3840                self.running = False 
     41                self.extensions = dict() 
    3942                 
    4043                try: 
     
    4346                        turbomail.config = dict() 
    4447                else: 
     48                        if not hasattr(turbomail, 'config'): 
     49                                turbomail.config = dict() 
     50                                return 
     51                         
     52                        turbogears.config.update(turbomail.config) 
    4553                        turbomail.config = turbogears.config 
    4654                        self.start_extension = self.start 
     
    6573                log.info("TurboMail extension starting up.") 
    6674                 
    67                 # Load the requested pool manager. 
    68                 manager = turbomail.config.get("mail.manager", "immediate") 
    69                 controller = self.load_single_entry("turbomail.managers", manager) 
    70                 if not controller: 
    71                         turbomail.config.update({"mail.on": False}) 
    72                         log.error("Unable to locate %s manager, TurboMail disabled." % manager) 
    73                         self.stop(force=True) 
    74                         return 
    75                 turbomail.manager = controller.load() 
    76                 turbomail.manager.start() 
     75                def load(t, default): 
     76                        extension = turbomail.config.get("mail.%s" % t, default) 
     77                        controller = self.load_single_entry("turbomail.%ss" % t, extension) 
     78                        if not controller: 
     79                                turbomail.config.update({"mail.on": False}) 
     80                                log.error("Unable to locate %s %s, TurboMail disabled." % (extension, t)) 
     81                                self.stop(force=True) 
     82                                return 
     83                        setattr(turbomail, t, controller.load()) 
     84                        controller.start() 
    7785                 
    78                 # Load the requested mail provider. 
    79                 provider = turbomail.config.get("mail.provider", "debug") 
    80                 controller = self.load_single_entry("turbomail.providers", provider) 
    81                 if not controller: 
    82                         turbomail.config.update({"mail.on": False}) 
    83                         log.error("Unable to locate %s provider, TurboMail disabled." % provider) 
    84                         self.stop(force=True) 
    85                         return 
    86                 turbomail.provider = controller.load() 
    87                 turbomail.provider.start() 
     86                # Load the requested manager and provider. 
     87                load('manager', 'immediate') 
     88                load('provider', 'debug') 
    8889                 
    8990                # Load and initalize the various extensions. 
     
    9192                for entrypoint in extensions: 
    9293                        log.debug("Found extension '%s'." % entrypoint.name) 
    93                         if turbomail.config.get("mail." + entrypoint.name + ".on", False): 
    94                                 log.debug("Loading extension '%s'." % entrypoint.name) 
    95                                 ext = entrypoint.load() 
    96                                 if hasattr(ext, "start"): ext.start() 
     94                        if turbomail.config.get("mail.%s.on" % entrypoint.name, False): 
     95                                log.info("Loading extension '%s'." % entrypoint.name) 
     96                                self.extensions[entrypoint.name] = entrypoint.load() 
     97                                 
     98                                if hasattr(self.extensions[entrypoint.name], 'load'): 
     99                                        self.extensions[entrypoint.name] = self.extensions[entrypoint.name].load() 
     100                                 
     101                                if hasattr(self.extensions[entrypoint.name], 'start'): 
     102                                        self.extensions[entrypoint.name].start() 
    97103                 
    98104                self.running = True