1
2
3 """TurboGears extension startup and shutdown interface."""
4
5 import logging
6 log = logging.getLogger("turbomail.startup")
7
8 import turbogears
9
10 import turbomail
11 from turbomail.exceptions import *
12 from turbomail.pool import MailPool
13
14 from email import Charset
15
16
17 __all__ = ['start_extension', 'shutdown_extension', 'MailTemplate']
18
19
21 """TurboGears extension startup.
22
23 Exits immediately if TurboMail is not enabled and creates a MailPool
24 instance if all is well.
25 """
26
27 if not turbogears.config.get("mail.on", False):
28 return
29
30 if turbogears.config.get("mail.server", None) is None:
31 raise MailConfigurationException("Outbound server must be specified.")
32
33 log.info("Outbound mail queue manager starting.")
34
35 if turbogears.config.get("mail.encoding", "us-ascii") == "utf-8-qp":
36 Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8')
37 turbogears.config.update({"mail.encoding": "utf-8"})
38
39 turbomail._queue = MailPool(
40 interval=turbogears.config.get("mail.interval", 10),
41 threads=turbogears.config.get("mail.threads", 4),
42 jobs=turbogears.config.get("mail.jobs", 10),
43 timeout=turbogears.config.get("mail.timeout", 60),
44 server=turbogears.config.get("mail.server"),
45 username=turbogears.config.get("mail.username", None),
46 password=turbogears.config.get("mail.password", None),
47 debug=turbogears.config.get("mail.debug", False),
48 tls=turbogears.config.get("mail.tls", None),
49 polling=turbogears.config.get("mail.polling", None)
50 )
51
52 if turbomail._queue._polling:
53 turbomail.queue.start()
54
55
57 """TurboGears extension shutdown.
58
59 Exits immediately if TurboMail is not enabled and shuts down the
60 MailPool object safely.
61 """
62
63 if not turbogears.config.get("mail.on", False):
64 return
65
66 log.info("Outbound mail queue manager shutting down.")
67
68
69 turbomail.queue = None
70