# encoding: utf-8
"""TurboGears extension startup and shutdown interface."""
import logging
log = logging.getLogger("turbomail.startup")
import turbogears
import turbomail
from turbomail.exceptions import *
from turbomail.pool import MailPool
from email import Charset
__all__ = ['start_extension', 'shutdown_extension', 'MailTemplate']
def start_extension():
"""TurboGears extension startup.
Exits immediately if TurboMail is not enabled and creates a MailPool
instance if all is well.
"""
if not turbogears.config.get("mail.on", False):
return
if turbogears.config.get("mail.server", None) is None:
raise MailConfigurationException("Outbound server must be specified.")
log.info("Outbound mail queue manager starting.")
if turbogears.config.get("mail.encoding", "us-ascii") == "utf-8-qp":
Charset.add_charset('utf-8', Charset.SHORTEST, Charset.QP, 'utf-8')
turbogears.config.update({"mail.encoding": "utf-8"})
turbomail._queue = MailPool(
interval=turbogears.config.get("mail.interval", 10),
threads=turbogears.config.get("mail.threads", 4),
jobs=turbogears.config.get("mail.jobs", 10),
timeout=turbogears.config.get("mail.timeout", 60),
server=turbogears.config.get("mail.server"),
username=turbogears.config.get("mail.username", None),
password=turbogears.config.get("mail.password", None),
debug=turbogears.config.get("mail.debug", False),
tls=turbogears.config.get("mail.tls", None),
polling=turbogears.config.get("mail.polling", None)
)
if turbomail._queue._polling:
turbomail.queue.start()
def shutdown_extension():
"""TurboGears extension shutdown.
Exits immediately if TurboMail is not enabled and shuts down the
MailPool object safely.
"""
if not turbogears.config.get("mail.on", False):
return
log.info("Outbound mail queue manager shutting down.")
# turbomail.queue.shutdown()
turbomail.queue = None
syntax highlighted by Code2HTML, v. 0.9.1