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 testmode=turbogears.config.get("mail.testmode", False)
51 )
52
53 if turbomail._queue._polling:
54 turbomail._queue.start()
55
56
58 """TurboGears extension shutdown.
59
60 Exits immediately if TurboMail is not enabled and shuts down the
61 MailPool object safely.
62 """
63
64 if not turbogears.config.get("mail.on", False):
65 return
66
67 log.info("Outbound mail queue manager shutting down.")
68
69 if hasattr(turbomail._queue, 'shutdown'):
70 turbomail._queue.shutdown()
71 turbomail._queue = None
72