[Erp5-report] r28197 - in /erp5/trunk/products/ERP5/interfaces: mime_sender.py sendable.py

nobody at svn.erp5.org nobody at svn.erp5.org
Wed Jul 29 10:53:12 CEST 2009


Author: jp
Date: Wed Jul 29 10:53:11 2009
New Revision: 28197

URL: http://svn.erp5.org?rev=28197&view=rev
Log:
Draft of future interface to unifiy send methods

Added:
    erp5/trunk/products/ERP5/interfaces/mime_sender.py
    erp5/trunk/products/ERP5/interfaces/sendable.py

Added: erp5/trunk/products/ERP5/interfaces/mime_sender.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/interfaces/mime_sender.py?rev=28197&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/interfaces/mime_sender.py (added)
+++ erp5/trunk/products/ERP5/interfaces/mime_sender.py [utf8] Wed Jul 29 10:53:11 2009
@@ -1,0 +1,54 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved.
+#                    Jean-Paul Smets-Solanes <jp at nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from zope.interface import Interface
+
+class IMimeSender(Interface):
+  """
+    Common Interface for all objects incl. tools which can
+    be invoked to send MIMEMultipart instances.
+  """
+
+  def send(message):
+    """
+      Send a MIMEMultipart. 
+    """
+    pass
+    
+  def logMIMEMultipart(message, document):
+    """
+      Log a MIMEMultipart message for a given document
+    """
+    pass
+
+  def getMIMEMultipartLogList(document=None)
+    """
+      Retrieve the list of messages sent using with this sender
+    """
+    pass

Added: erp5/trunk/products/ERP5/interfaces/sendable.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/interfaces/sendable.py?rev=28197&view=auto
==============================================================================
--- erp5/trunk/products/ERP5/interfaces/sendable.py (added)
+++ erp5/trunk/products/ERP5/interfaces/sendable.py [utf8] Wed Jul 29 10:53:11 2009
@@ -1,0 +1,131 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# Copyright (c) 2009 Nexedi SA and Contributors. All Rights Reserved.
+#                    Jean-Paul Smets-Solanes <jp at nexedi.com>
+#
+# WARNING: This program as such is intended to be used by professional
+# programmers who take the whole responsability of assessing all potential
+# consequences resulting from its eventual inadequacies and bugs
+# End users who are looking for a ready-to-use solution with commercial
+# garantees and support are strongly adviced to contract a Free Software
+# Service Company
+#
+# This program is Free Software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License
+# as published by the Free Software Foundation; either version 2
+# of the License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+#
+##############################################################################
+
+from zope.interface import Interface
+
+class ISendable(Interface):
+  """
+    Common Interface for all documents which can be sent.
+    The notion of sending a document is independent of the 
+    kind of transport. A document can be sent by email, 
+    by fax, by chat, by printing it out, etc. The recipients are
+    defined by the 'send' method, which can usually be overloaded
+    through type based methods in order to implement all
+    kinds of policies (ex. cc any sent invoice to a given 
+    mailing list, selected based on some predicate information
+    stored on email addresses of the Person or Organisation).
+
+    Sent messages all use a common format: MIMEMultipart. Tools
+    are invoked to send content. Tools must thus support MIMEMultipart
+    and implement the IMIMESender interface.
+
+    Sent messages can be recorded in the form of Event instances.
+  """
+
+  def send(from_url=None, to_url=None, cc_url=None, bcc_url=None,
+           reply_url=None, subject=None, body=None, body_encoding=None,
+           attachment_format=None, attachment_list=None, mime_sender=None,
+           download=False, **kw):
+    """
+      High-level interface. The purpose of this method is to implement
+      the sending logic ie. select recipients, select the tool to send
+      the message, etc. Content of the message can either derive from
+      document properties or can be provided through the 'body' a parameter.
+      This method is not supposed to generate the actual message envelope.
+      This is the role of asMIMEMultipart (bellow).
+
+      from_url -- the sender of this email. If not provided
+                  we will use source to find a valid
+                  email address
+
+      to_url   -- the recipients of this email. If not provided
+                 we will use destination category to 
+                 find a list of valid email addresses
+
+      cc_url   -- the Cc recipients of this email (optional)
+
+      bcc_url  -- the Bcc recipients of this email (optional)
+
+      reply_url -- the email address to reply to. If nothing
+                   is provided, use the email defined in 
+                   preferences. (XXX)
+
+      subject  -- a custom title. If not provided, we will use
+                  getTitle XXX (getTranslatedTitle)
+
+      body     -- a body message. If not provided, we will
+                  use the text representation of the event
+                  as body (UTF-8)
+
+      body_encoding   -- the text encoding for the message body. 
+                         this is required to send emails in countries
+                         such as Japan where UTF-8 is not favoured
+
+      attachment_list -- list of dictionary which contains raw data and
+                         name and mimetype for attachment.
+                         See NotificationTool.buildEmailMessage.
+
+      attachment_format -- defines an option format
+                 to convert attachments to (ex. application/pdf)
+
+      download -- if set to True returns, the message online
+                 rather than sending it.
+
+      language -- selects the language to use for message generation
+                  (ex. printout language, mail template language, content, etc.)
+                   etc
+
+      mime_sender -- the sender tool to use to send the message (optional)
+
+      **kw -- optional parameters
+    """
+    pass
+
+  def asMIMEMultipart(from_url, to_url,
+                      cc_url=None, bcc_url=None,
+                      reply_url=None, subject=None,
+                      body=None, body_encoding=None, 
+                      attachment_list=None,
+                      attachment_format=None,
+                      extra_header_dict=None, 
+                      additional_header_dict=None,
+                      **kw):
+    """
+      Low-level interface. Build a MIMEMultipart instance based on 
+      the parameters and on the document content. Recipients
+      must be provided explicitely. Actual MIMEMultipart generation
+      uses mailtemplates.
+    """
+    pass
+
+  def getMIMEMultipartLogList(mime_sender=None)
+    """
+      Retrieve the list of messages sent based on the current document
+    """
+    pass




More information about the Erp5-report mailing list