[Erp5-report] r20252 - in /erp5/trunk/bt5/erp5_crm: SkinTemplateItem/portal_skins/erp5_crm/...

nobody at svn.erp5.org nobody at svn.erp5.org
Tue Apr 1 16:54:17 CEST 2008


Author: yusei
Date: Tue Apr  1 16:54:17 2008
New Revision: 20252

URL: http://svn.erp5.org?rev=20252&view=rev
Log:
2008-4-1 yusei
* When receive forwarded mail, update recipient and sender automatically.

Added:
    erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_getPersonListFromFromHeader.xml
Modified:
    erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_finishIngestion.xml
    erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_getPropertyDictFromContent.xml
    erp5/trunk/bt5/erp5_crm/bt/change_log
    erp5/trunk/bt5/erp5_crm/bt/revision

Added: erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_getPersonListFromFromHeader.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_getPersonListFromFromHeader.xml?rev=20252&view=auto
==============================================================================
--- erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_getPersonListFromFromHeader.xml (added)
+++ erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Base_getPersonListFromFromHeader.xml Tue Apr  1 16:54:17 2008
@@ -1,0 +1,163 @@
+<?xml version="1.0"?>
+<ZopeData>
+  <record id="1" aka="AAAAAAAAAAE=">
+    <pickle>
+      <tuple>
+        <global name="PythonScript" module="Products.PythonScripts.PythonScript"/>
+        <tuple/>
+      </tuple>
+    </pickle>
+    <pickle>
+      <dictionary>
+        <item>
+            <key> <string>Python_magic</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>Script_magic</string> </key>
+            <value> <int>3</int> </value>
+        </item>
+        <item>
+            <key> <string>__ac_local_roles__</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_bind_names</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="NameAssignments" module="Shared.DC.Scripts.Bindings"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>_asgns</string> </key>
+                        <value>
+                          <dictionary>
+                            <item>
+                                <key> <string>name_container</string> </key>
+                                <value> <string>container</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_context</string> </key>
+                                <value> <string>context</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_m_self</string> </key>
+                                <value> <string>script</string> </value>
+                            </item>
+                            <item>
+                                <key> <string>name_subpath</string> </key>
+                                <value> <string>traverse_subpath</string> </value>
+                            </item>
+                          </dictionary>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>_body</string> </key>
+            <value> <string encoding="cdata"><![CDATA[
+
+getResultValue = context.portal_catalog.getResultValue\n
+\n
+result = []\n
+for recipient in text.split(\',\'):\n
+  if "<" in recipient:\n
+    recipient = recipient[recipient.find(\'<\') + 1:]\n
+    recipient = recipient[:recipient.find(\'>\')]\n
+  if recipient:\n
+    email = getResultValue(url_string=recipient, portal_type="Email")\n
+    if email is not None:\n
+      result.append(email.getParentValue())\n
+return result\n
+
+
+]]></string> </value>
+        </item>
+        <item>
+            <key> <string>_code</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_filepath</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>_params</string> </key>
+            <value> <string>text</string> </value>
+        </item>
+        <item>
+            <key> <string>errors</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_code</string> </key>
+            <value>
+              <object>
+                <klass>
+                  <global name="FuncCode" module="Shared.DC.Scripts.Signature"/>
+                </klass>
+                <tuple/>
+                <state>
+                  <dictionary>
+                    <item>
+                        <key> <string>co_argcount</string> </key>
+                        <value> <int>1</int> </value>
+                    </item>
+                    <item>
+                        <key> <string>co_varnames</string> </key>
+                        <value>
+                          <tuple>
+                            <string>text</string>
+                            <string>_getattr_</string>
+<string>context</string>
+                            <string>getResultValue</string>
+                            <string>result</string>
+                            <string>_getiter_</string>
+                            <string>recipient</string>
+                            <string>_getitem_</string>
+                            <string>email</string>
+                            <string>None</string>
+                          </tuple>
+                        </value>
+                    </item>
+                  </dictionary>
+                </state>
+              </object>
+            </value>
+        </item>
+        <item>
+            <key> <string>func_defaults</string> </key>
+            <value>
+              <none/>
+            </value>
+        </item>
+        <item>
+            <key> <string>id</string> </key>
+            <value> <string>Base_getPersonListFromFromHeader</string> </value>
+        </item>
+        <item>
+            <key> <string>warnings</string> </key>
+            <value>
+              <tuple/>
+            </value>
+        </item>
+      </dictionary>
+    </pickle>
+  </record>
+</ZopeData>

Modified: erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_finishIngestion.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_finishIngestion.xml?rev=20252&r1=20251&r2=20252&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_finishIngestion.xml (original)
+++ erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_finishIngestion.xml Tue Apr  1 16:54:17 2008
@@ -71,6 +71,38 @@
   are marked as \'New\' and appear in the worklist.\n
 """\n
 context.receive()\n
+\n
+# Forwarded mail\n
+forwarded_mail = False\n
+subject = context.getContentInformation().get(\'Subject\')\n
+forwarded_mark_list = (\'Fwd\', \'Fw\', \'Tr\',)\n
+if subject is not None and \':\' in subject:\n
+  if subject[0]==\'[\':# some email client enclose subject with \'[]\'\n
+    subject = subject[1:]\n
+  for mark in forwarded_mark_list:\n
+    if subject.startswith(mark+\':\'):\n
+      forwarded_mail = True\n
+      break\n
+if forwarded_mail is True:\n
+  # find original recipient\n
+  source = context.getSource()\n
+  if source is not None:\n
+    context.setDestination(source)\n
+\n
+  # find original sender\n
+  body = context.getTextContent()\n
+  from_header = \'From: \'\n
+  from_header_length = len(from_header)\n
+  Base_getPersonListFromFromHeader = context.Base_getPersonListFromFromHeader\n
+  line = \'\'\n
+  for line in body.split(\'\\n\'):\n
+    if line.startswith(from_header):\n
+      break\n
+  if line:\n
+    from_text = line[from_header_length:]\n
+    person_list = Base_getPersonListFromFromHeader(from_text)\n
+    if person_list:\n
+      context.setSource(person_list[0].getRelativeUrl())\n
 </string> </value>
         </item>
         <item>
@@ -120,7 +152,25 @@
                         <value>
                           <tuple>
                             <string>_getattr_</string>
-<string>context</string>
+                            <string>context</string>
+                            <string>False</string>
+                            <string>forwarded_mail</string>
+                            <string>subject</string>
+                            <string>forwarded_mark_list</string>
+                            <string>None</string>
+                            <string>_getitem_</string>
+                            <string>_getiter_</string>
+                            <string>mark</string>
+                            <string>True</string>
+                            <string>source</string>
+                            <string>body</string>
+                            <string>from_header</string>
+                            <string>len</string>
+                            <string>from_header_length</string>
+                            <string>Base_getPersonListFromFromHeader</string>
+                            <string>line</string>
+                            <string>from_text</string>
+                            <string>person_list</string>
                           </tuple>
                         </value>
                     </item>

Modified: erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_getPropertyDictFromContent.xml
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_getPropertyDictFromContent.xml?rev=20252&r1=20251&r2=20252&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_getPropertyDictFromContent.xml (original)
+++ erp5/trunk/bt5/erp5_crm/SkinTemplateItem/portal_skins/erp5_crm/Event_getPropertyDictFromContent.xml Tue Apr  1 16:54:17 2008
@@ -65,9 +65,7 @@
         </item>
         <item>
             <key> <string>_body</string> </key>
-            <value> <string encoding="cdata"><![CDATA[
-
-"""\n
+            <value> <string>"""\n
   This script is called during the metadata discovery process\n
   for each event which has been ingested through the email interface\n
   by portal contributions. It tries to analyse the text content \n
@@ -82,18 +80,10 @@
 """\n
 \n
 getResultValue = context.getPortalObject().portal_catalog.getResultValue\n
-\n
-def getPersonList(information_text):\n
-  result = []\n
-  for recipient in information_text.split(\',\'):\n
-    if "<" in recipient:\n
-      recipient = recipient[recipient.find(\'<\') + 1:]\n
-      recipient = recipient[:recipient.find(\'>\')]\n
-    if recipient:\n
-      email = getResultValue(url_string=recipient, portal_type="Email")\n
-      if email is not None:\n
-        result.append(email.getParentValue().getRelativeUrl())\n
-  return result\n
+Base_getPersonListFromFromHeader = context.Base_getPersonListFromFromHeader\n
+def getPersonList(text):\n
+  return [person.getRelativeUrl()\n
+          for person in Base_getPersonListFromFromHeader(text)]\n
 \n
 content_information = context.getContentInformation()\n
 sender_list = getPersonList(content_information.get(\'From\', \'\'))\n
@@ -138,9 +128,7 @@
   result[\'portal_type\'] = portal_type\n
 \n
 return result\n
-
-
-]]></string> </value>
+</string> </value>
         </item>
         <item>
             <key> <string>_code</string> </key>
@@ -191,6 +179,7 @@
                             <string>_getattr_</string>
                             <string>context</string>
                             <string>getResultValue</string>
+                            <string>Base_getPersonListFromFromHeader</string>
                             <string>getPersonList</string>
                             <string>content_information</string>
                             <string>sender_list</string>

Modified: erp5/trunk/bt5/erp5_crm/bt/change_log
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_crm/bt/change_log?rev=20252&r1=20251&r2=20252&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_crm/bt/change_log (original)
+++ erp5/trunk/bt5/erp5_crm/bt/change_log Tue Apr  1 16:54:17 2008
@@ -1,3 +1,6 @@
+2008-4-1 yusei
+* When receive forwarded mail, update recipient and sender automatically.
+
 2008-03-31 yusei
 * Add a type based method for rewriting mail message.
 

Modified: erp5/trunk/bt5/erp5_crm/bt/revision
URL: http://svn.erp5.org/erp5/trunk/bt5/erp5_crm/bt/revision?rev=20252&r1=20251&r2=20252&view=diff
==============================================================================
--- erp5/trunk/bt5/erp5_crm/bt/revision (original)
+++ erp5/trunk/bt5/erp5_crm/bt/revision Tue Apr  1 16:54:17 2008
@@ -1,1 +1,1 @@
-212
+218




More information about the Erp5-report mailing list