]> git.ipfire.org Git - ipfire.org.git/commitdiff
messages: Actually put message into the queue
authorMichael Tremer <michael.tremer@ipfire.org>
Tue, 4 Dec 2018 00:09:10 +0000 (00:09 +0000)
committerMichael Tremer <michael.tremer@ipfire.org>
Tue, 4 Dec 2018 00:09:10 +0000 (00:09 +0000)
Signed-off-by: Michael Tremer <michael.tremer@ipfire.org>
src/backend/messages.py

index 71e898e922c00ed2c1af12a40a52f61c86efaeeb..ceb5ffc22f451507dd109abad6c56b63cf19ef29 100644 (file)
@@ -9,6 +9,7 @@ import textwrap
 import tornado.gen
 import tornado.template
 
+from . import accounts
 from . import misc
 from .decorators import *
 
@@ -27,6 +28,14 @@ class Messages(misc.Object):
 
                return tornado.template.Loader(templates_dir, autoescape=None)
 
+       def make_recipient(self, recipient):
+               # Use the contact instead of the account
+               if isinstance(recipient, accounts.Account):
+                       recipient = "%s <%s>" % (recipient, recipient.email)
+
+               # Fall back to pass on strings
+               return recipient
+
        def make_msgid(self):
                return email.utils.make_msgid("ipfire", domain="ipfire.org")
 
@@ -34,6 +43,18 @@ class Messages(misc.Object):
        def bounce_email_address(self):
                return self.settings.get("bounce_email_address")
 
+       def _send(self, recipients, message, sender=None, priority=0):
+               if not recipients:
+                       raise ValueError("Empty list of recipients")
+
+               # Format recipients
+               recipients = [self.make_recipient(r) for r in recipients]
+
+               res = self.db.get("INSERT INTO messages(message, priority, envelope_recipients) \
+                       VALUES(%s, %s, %s) RETURNING id", message, priority, recipients)
+
+               logging.debug("Message queued with ID %s" % res.id)
+
        def send(self, recipients, message, priority=None, headers={}):
                # Convert message from string
                if not isinstance(message, email.message.Message):
@@ -82,6 +103,9 @@ class Messages(misc.Object):
                # Create a MIMEMultipart message.
                message = email.mime.multipart.MIMEMultipart()
 
+               # Create an alternating multipart message to show HTML or text
+               alternative = email.mime.multipart.MIMEMultipart("alternative")
+
                for extension, mime_type in (("txt", "plain"), ("html", "html")):
                        try:
                                t = self.template_loader.load("%s.%s" % (template_name, extension))