Changeset 65

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

Modified extension loading behaviour.

Location:
branches/3.0/turbomail
Files:
2 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 
  • branches/3.0/turbomail/extensions/utf8qp.py

    r42 r65  
    22 
    33"""TurboMail extension API.""" 
     4 
     5__version__ = "$Revision: 1 $" 
    46 
    57import logging 
     
    79 
    810import turbomail 
     11from turbomail.api import Extension 
    912 
    1013from email import Charset 
     
    1316 
    1417 
    15 def start(): 
    16         log.info("Configuring UTF-8 character set to use Quoted-Printable encoding.") 
    17         Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8') 
    18         turbomail.config.update({"mail.encoding": "utf-8"}) 
     18class UTF8QuotedPrintable(Extension): 
     19        name = "utf8qp" 
     20        version = "1.0" 
     21        url = "http://www.python-turbomail.org/wiki/3.0/SampleExtension" 
     22         
     23        def start(self): 
     24                super(UTF8QuotedPrintable, self).start() 
     25                 
     26                log.info("Configuring UTF-8 character set to use Quoted-Printable encoding.") 
     27                Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8') 
     28                turbomail.config.update({"mail.encoding": "utf-8"}) 
     29         
     30        def stop(self): 
     31                super(UTF8QuotedPrintable, self).stop() 
     32                 
     33                log.info("Configuring UTF-8 character set to use Base-64 encoding.") 
     34                Charset.add_charset('utf-8', Charset.SHORTEST, Charset.BASE64, 'utf-8') 
     35 
     36 
     37def load(): 
     38        return UTF8QuotedPrintable() 
     39 
     40