- Timestamp:
- 11/09/07 04:38:51 (1 year ago)
- Location:
- branches/3.0
- Files:
-
- 1 removed
- 7 modified
-
setup.py (modified) (4 diffs)
-
turbomail/__init__.py (modified) (1 diff)
-
turbomail/api.py (modified) (1 diff)
-
turbomail/control.py (modified) (7 diffs)
-
turbomail/extensions/notification.py (modified) (1 diff)
-
turbomail/extensions/smime.py (deleted)
-
turbomail/extensions/utf8qp.py (modified) (2 diffs)
-
turbomail/util.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/3.0/setup.py
r70 r71 4 4 __version__ = "$Revision$" 5 5 6 import os 6 7 import sys 8 from fnmatch import fnmatchcase 9 from distutils.util import convert_path 7 10 from setuptools import setup, find_packages 8 11 … … 10 13 raise SystemExit("Python 2.3 or later is required") 11 14 12 import os13 15 execfile(os.path.join("turbomail", "release.py")) 14 16 … … 74 76 "uuid >= 1.30" 75 77 ], 78 76 79 extras_require = { 77 'turbogears': ["TurboGears >=1.0"],78 'smime': [" M2Crypto>=0.18"]80 'turbogears': ["TurboGears >= 1.0"], 81 'smime': ["TurboMail-SMIME >= 0.1"] 79 82 }, 83 80 84 zip_safe=True, 81 85 packages=find_packages(), 82 86 package_data = find_package_data(where='turbomail', package='turbomail'), 83 keywords = ["turbogears.extension"], 87 namespace_packages = [ 88 'turbomail', 89 'turbomail.extensions', 90 'turbomail.managers', 91 'turbomail.providers' 92 ] 84 93 classifiers = [ 85 94 'Development Status :: 5 - Production/Stable', … … 94 103 test_suite = 'nose.collector', 95 104 entry_points = { 96 'turbogears.extensions': [97 "turbomail = turbomail.control:interface"98 ],99 105 'turbomail.managers': [ 100 106 "demand = turbomail.managers.demand", -
branches/3.0/turbomail/__init__.py
r63 r71 1 # encoding: utf-8 2 3 """TurboMail is a generic multi-threaded mail delivery subsystem. 4 TurboMail uses built-in Python modules for SMTP communication and 5 MIME e-mail creation, but greatly simplifies these tasks by 6 performing the grunt-work for you. 7 8 TurboMail is heavily inspired by PHPMailer, a very, very handy class 9 for PHP 4 & 5 by Brent R. Matzelle.""" 10 11 from turbomail.release import \ 12 version as __version__, \ 13 author as __author__, \ 14 email as __email__, \ 15 license as __license__, \ 16 copyright as __copyright__ 17 18 from turbomail.message import Message 19 from turbomail.control import interface 20 from turbomail.util import Address, AddressList, send 21 22 __all__ = [ 23 'Address', 24 'AddressList', 25 'interface', 26 'Message', 27 'send', 28 29 'api', 30 'exceptions', 31 'extensions', 32 'managers', 33 'providers', 34 'release', 35 'smime', 36 37 'config', 38 'manager', 39 'provider', 40 ] 41 42 manager = None 43 provider = None 44 config = {} 45 1 __import__('pkg_resources').declare_namespace(__name__) -
branches/3.0/turbomail/api.py
r66 r71 4 4 5 5 __version__ = "$Revision$" 6 7 from exceptions import * 8 6 9 __all__ = ['Extension', 'ProviderFactory', 'Provider', 'Manager'] 7 10 -
branches/3.0/turbomail/control.py
r68 r71 7 7 in your own applications:: 8 8 9 import turbomail 10 turbomail.interface.start() 9 from turbomail.message import Message 10 from turbomail.control import interface 11 interface.start() 11 12 12 message = turbomail.Message(...)13 turbomail.send(message)13 message = Message(...) 14 interface.send(message) 14 15 15 turbomail.interface.stop()16 interface.stop() 16 17 17 18 TurboMail will, by default, immediately delete any messages remaining in … … 25 26 log = logging.getLogger("turbomail.control") 26 27 27 import turbomail28 28 import pkg_resources 29 29 … … 40 40 self.running = False 41 41 self.extensions = dict() 42 self.config = dict() 43 self.manager = None 44 self.provider = None 42 45 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): 58 47 for entrypoint in pkg_resources.iter_entry_points(group, name): 59 48 return entrypoint.load() … … 61 50 62 51 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): 71 53 return 72 54 … … 74 56 75 57 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) 78 60 if not controller: 79 turbomail.config.update({"mail.on": False})61 self.config.update({"mail.on": False}) 80 62 log.error("Unable to locate %s %s, TurboMail disabled." % (extension, t)) 81 63 self.stop(force=True) 82 64 return 83 setattr( turbomail, t, controller.load())65 setattr(self, t, controller.load()) 84 66 controller.start() 85 67 … … 92 74 for entrypoint in extensions: 93 75 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): 95 78 log.info("Loading extension '%s'." % entrypoint.name) 79 96 80 self.extensions[entrypoint.name] = entrypoint.load() 97 81 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'): 99 86 self.extensions[entrypoint.name] = self.extensions[entrypoint.name].load() 100 87 … … 112 99 extensions = pkg_resources.iter_entry_points("turbomail.extensions") 113 100 for entrypoint in extensions: 114 if turbomail.config.get("mail." + entrypoint.name + ".on", False):101 if self.config.get("mail." + entrypoint.name + ".on", False): 115 102 ext = entrypoint.load() 116 103 if hasattr(ext, "stop"): ext.stop() 117 104 118 105 # 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() 121 108 122 turbomail.provider = None123 turbomail.manager = None109 self.provider = None 110 self.manager = None 124 111 125 112 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 126 120 127 121 -
branches/3.0/turbomail/extensions/notification.py
r68 r71 30 30 31 31 32 def load(): 33 return NotificationManager() 32 interface = NotificationManager() -
branches/3.0/turbomail/extensions/utf8qp.py
r68 r71 6 6 7 7 import logging 8 log = logging.getLogger("turbomail. utf8qp")8 log = logging.getLogger("turbomail.extension.utf8qp") 9 9 10 10 import turbomail … … 35 35 36 36 37 def load(): 38 return UTF8QuotedPrintable() 39 40 37 interface = UTF8QuotedPrintable() -
branches/3.0/turbomail/util.py
r66 r71 11 11 from email.utils import parseaddr, formataddr 12 12 13 __all__ = ['Address', 'AddressList' , 'send']13 __all__ = ['Address', 'AddressList'] 14 14 15 15 … … 108 108 109 109 protected = classmethod(protected) 110 111 112 def send(message):113 if not turbomail.manager:114 raise MailNotEnabledError115 116 return turbomail.manager.deliver(message)
