Changeset 102 for trunk

Show
Ignore:
Timestamp:
10/04/08 11:14:31 (3 months ago)
Author:
fs
Message:

adds the ability not to use setuptools for manager/provider class lookup (#75)

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/turbomail/control.py

    r92 r102  
    4545        self.manager = None 
    4646        self.provider = None 
    47          
     47     
    4848    def __load_single_entry(self, group, name): 
    4949        for entrypoint in pkg_resources.iter_entry_points(group, name): 
     
    5151        return None 
    5252     
    53     def start(self): 
     53    def start(self, extra_classes=None): 
    5454        if not self.config.get("mail.on", False): 
    5555            return 
     
    5757        log.info("TurboMail extension starting up.") 
    5858         
    59         def load(t, default): 
     59        def load(t, default, extra_classes): 
    6060            extension = self.config.get("mail.%s" % t, default) 
    61             controller = self.__load_single_entry("turbomail.%ss" % t, extension) 
     61            if extra_classes != None and extension in extra_classes: 
     62                controller = extra_classes[extension] 
     63                if isinstance(controller, type): 
     64                    controller = controller() 
     65            else: 
     66                entry_point = "turbomail.%ss" % t 
     67                controller = self.__load_single_entry(entry_point, extension) 
    6268            if not controller: 
    6369                self.config.update({"mail.on": False}) 
     
    7278         
    7379        # Load the requested manager and provider. 
    74         load('manager', 'immediate') 
    75         load('provider', 'debug') 
     80        load('manager', 'immediate', extra_classes) 
     81        load('provider', 'debug', extra_classes) 
    7682         
    7783        # Load and initialize the various extensions. 
     
    120126        if not self.manager: 
    121127            raise MailNotEnabledError 
     128         
     129        return self.manager.deliver(message) 
    122130 
    123         return self.manager.deliver(message) 
    124          
    125131 
    126132