[IMP]Outlook : Open Document should also open Mail using refrences-ids
authorjam-openerp <jam@tinyerp.com>
Thu, 18 Nov 2010 11:22:24 +0000 (16:52 +0530)
committerjam-openerp <jam@tinyerp.com>
Thu, 18 Nov 2010 11:22:24 +0000 (16:52 +0530)
bzr revid: jam@tinyerp.com-20101118112224-fn3zg2usfb96lbb3

addons/outlook/plugin/openerp-outlook-plugin/addin.py
addons/outlook/plugin/openerp-outlook-plugin/tiny_xmlrpc.py

index b75342e..eec4e5e 100644 (file)
@@ -50,120 +50,71 @@ def GetConn():
     d=Dispatch("Python.OpenERP.XMLRpcConn")\r
     return d\r
 class Configuration:\r
-    def Init(self, application):\r
-        self.mngr = None\r
-\r
-    def Close(self):\r
-        self.mngr = None\r
-        self.close()\r
-        win32ui.MessageBox("Configuration","Configuration")\r
 \r
     def OnClick(self, button, cancel):\r
         import win32ui\r
         try:\r
-            self.mngr = manager.GetManager()\r
-            self.mngr.ShowManager()\r
+            mngr = manager.GetManager()\r
+            mngr.ShowManager()\r
         except Exception,e:\r
             win32ui.MessageBox("Fail to Initialize dialog.\n"+str(e),"OpenERP Configuration", win32con.MB_ICONERROR)\r
         return cancel\r
 #\r
 class ViewPartners:\r
-    def Init(self, application):\r
-        self.mngr = None\r
-        self.data = None\r
-        self.outlook = None\r
-        self.ex= None\r
-\r
-    def Close(self):\r
-        self.mngr = None\r
-        self.data = None\r
-        self.outlook = None\r
-        self.ex= None\r
-        self.close()\r
-        win32ui.MessageBox("ViewPartners","ViewPartners")\r
-\r
     def OnClick(self, button, cancel):\r
         from win32com.client import Dispatch\r
         import win32con\r
-        self.mngr = manager.GetManager()\r
-        self.data = self.mngr.LoadConfig()\r
-        self.outlook = Dispatch("Outlook.Application")\r
-        self.ex = self.outlook.ActiveExplorer()\r
-        if self.ex:\r
-            is_login = str(self.data['login'])\r
+        mngr = manager.GetManager()\r
+        data = mngr.LoadConfig()\r
+        outlook = Dispatch("Outlook.Application")\r
+        ex = outlook.ActiveExplorer()\r
+        if ex:\r
+            is_login = str(data['login'])\r
             if is_login == 'False':\r
                 win32ui.MessageBox("Please login to the database first", "OpenERP Connection", win32con.MB_ICONEXCLAMATION)\r
-            elif self.ex.Selection.Count == 1 or self.ex.Selection.Count == 0:\r
-                self.mngr = manager.GetManager()\r
-                self.mngr.ShowManager("IDD_VIEW_PARTNER_DIALOG")\r
-            elif self.ex.Selection.Count > 1:\r
+            elif ex.Selection.Count == 1 or ex.Selection.Count == 0:\r
+                mngr = manager.GetManager()\r
+                mngr.ShowManager("IDD_VIEW_PARTNER_DIALOG")\r
+            elif ex.Selection.Count > 1:\r
                 win32ui.MessageBox("Multiple selection not allowed. Please select only one mail at a time.","Open Contact",win32con.MB_ICONINFORMATION)\r
         return cancel\r
 #\r
 class OpenPartner:\r
-    def Init(self, application):\r
-        self.mngr = None\r
-        self.data = None\r
-        self.outlook = None\r
-        self.ex= None\r
-\r
-    def Close(self):\r
-        self.mngr = None\r
-        self.data = None\r
-        self.outlook = None\r
-        self.ex= None\r
-        self.close()\r
-        win32ui.MessageBox("OpenPartner","OpenPartner")\r
-\r
     def OnClick(self, button, cancel):\r
         import win32ui\r
-        self.mngr = manager.GetManager()\r
-        self.data = self.mngr.LoadConfig()\r
-        self.outlook = Dispatch("Outlook.Application")\r
-        self.ex = self.outlook.ActiveExplorer()\r
+        mngr = manager.GetManager()\r
+        data = mngr.LoadConfig()\r
+        outlook = Dispatch("Outlook.Application")\r
+        ex = outlook.ActiveExplorer()\r
         if ex:\r
-            is_login = str(self.data['login'])\r
+            is_login = str(data['login'])\r
             if is_login == 'False':\r
                 win32ui.MessageBox("Please login to the database first", "OpenERP Connection", win32con.MB_ICONEXCLAMATION)\r
-            elif self.ex.Selection.Count == 1:\r
-                self.mngr = manager.GetManager()\r
-                self.mngr.ShowManager("IDD_OPEN_PARTNER_DIALOG")\r
-            elif self.ex.Selection.Count == 0:\r
+            elif ex.Selection.Count == 1:\r
+                mngr = manager.GetManager()\r
+                mngr.ShowManager("IDD_OPEN_PARTNER_DIALOG")\r
+            elif ex.Selection.Count == 0:\r
                 win32ui.MessageBox("No mail selected to push to OpenERP","Push to OpenERP",win32con.MB_ICONINFORMATION)\r
-            elif self.ex.Selection.Count > 1:\r
+            elif ex.Selection.Count > 1:\r
                 win32ui.MessageBox("Multiple selection not allowed. Please select only one mail at a time.","Push to OpenERP",win32con.MB_ICONINFORMATION)\r
         return cancel\r
 #\r
 class OpenDocument:\r
-    def Init(self, application):\r
-        self.mngr = None\r
-        self.data = None\r
-        self.outlook = None\r
-        self.ex= None\r
-\r
-    def Close(self):\r
-        self.mngr = None\r
-        self.data = None\r
-        self.outlook = None\r
-        self.ex= None\r
-        self.close()\r
-        win32ui.MessageBox("OpenDocument","OpenDocument")\r
-\r
     def OnClick(self, button, cancel):\r
         from win32com.client import Dispatch\r
         import win32con\r
-        self.mngr = manager.GetManager()\r
-        self.data = self.mngr.LoadConfig()\r
-        self.outlook = Dispatch("Outlook.Application")\r
-        self.ex = self.outlook.ActiveExplorer()\r
-        if self.ex:\r
-            is_login = str(self.data['login'])\r
+        mngr = manager.GetManager()\r
+        data = mngr.LoadConfig()\r
+        outlook = Dispatch("Outlook.Application")\r
+        ex = outlook.ActiveExplorer()\r
+        if ex:\r
+            is_login = str(data['login'])\r
             if is_login == 'False':\r
                 win32ui.MessageBox("Please login to the database first", "OpenERP Connection", win32con.MB_ICONEXCLAMATION)\r
-            elif self.ex.Selection.Count == 1 or self.ex.Selection.Count == 0:\r
-                self.mngr = self.manager.GetManager()\r
-                self.mngr.ShowManager("IDD_OPEN_DOCUEMNT_DIALOG")\r
-            elif self.ex.Selection.Count > 1:\r
+            elif ex.Selection.Count == 1 or ex.Selection.Count == 0:\r
+                mngr = manager.GetManager()\r
+                mngr.ShowManager("IDD_OPEN_DOCUEMNT_DIALOG")\r
+            elif ex.Selection.Count > 1:\r
                 win32ui.MessageBox("Multiple selection not allowed. Please select only one mail at a time.","Open Document",win32con.MB_ICONINFORMATION)\r
         return cancel\r
 #\r
index 36646fb..85abe75 100644 (file)
@@ -133,35 +133,36 @@ class XMLRpcConn(object):
                        break\r
 \r
     def ArchiveToOpenERP(self, recs, mail):\r
-       import  win32con\r
+       import win32con\r
+        import win32ui\r
        conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object')\r
        flag = False\r
        new_msg =  ext_msg =""\r
        message_id = referances  = None\r
        try:\r
-               session = win32com.client.Dispatch("MAPI.session")\r
-               session.Logon('Outlook')\r
-               objMessage = session.GetMessage(mail.EntryID, mail.Parent.StoreID)\r
-               objFields = objMessage.Fields\r
-               strheader = objFields.Item(mapitags.PR_TRANSPORT_MESSAGE_HEADERS)\r
-               strheader = ustr(strheader).encode('iso-8859-1')\r
-               headers = {}\r
-               strheader = strheader.replace("\n ", " ").splitlines()\r
-               for line in strheader:\r
-                       split_here = line.find(":")\r
-                       headers[line[:split_here]] = line[split_here:]\r
-               temp1 = headers.get('Message-ID')\r
-               temp2 = headers.get('Message-Id')\r
-               referances = headers.get('References')\r
-               if temp1 == None:    message_id = temp2\r
-               if temp2 == None:    message_id = temp1\r
-               startCut = message_id.find("<")\r
-               endCut = message_id.find(">")\r
-               message_id = message_id[startCut:endCut+1]\r
-               if not referances == None:\r
-                       startCut = referances.find("<")\r
-                       endCut = referances.find(">")\r
-                       referances = referances[startCut:endCut+1]\r
+            session = win32com.client.Dispatch("MAPI.session")\r
+            session.Logon('Outlook')\r
+            objMessage = session.GetMessage(mail.EntryID, mail.Parent.StoreID)\r
+            objFields = objMessage.Fields\r
+            strheader = objFields.Item(mapitags.PR_TRANSPORT_MESSAGE_HEADERS)\r
+            strheader = ustr(strheader).encode('iso-8859-1')\r
+            headers = {}\r
+            strheader = strheader.replace("\n ", " ").splitlines()\r
+            for line in strheader:\r
+               split_here = line.find(":")\r
+               headers[line[:split_here]] = line[split_here:]\r
+            temp1 = headers.get('Message-ID')\r
+            temp2 = headers.get('Message-Id')\r
+            referances = headers.get('References')\r
+            if temp1 == None:    message_id = temp2\r
+            if temp2 == None:    message_id = temp1\r
+            startCut = message_id.find("<")\r
+            endCut = message_id.find(">")\r
+            message_id = message_id[startCut:endCut+1]\r
+            if not referances == None:\r
+               startCut = referances.find("<")\r
+               endCut = referances.find(">")\r
+               referances = referances[startCut:endCut+1]\r
        except Exception,e:\r
                win32ui.MessageBox(str(e),"Archive To OpenERP")\r
                return\r
@@ -447,11 +448,21 @@ class XMLRpcConn(object):
         return True\r
 \r
     def SearchEmailResources(self, message_id):\r
+        import win32ui\r
        conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')\r
        res_vals = []\r
        mail_id = execute( conn, 'execute', self._dbname, int(self._uid), self._pwd, 'mailgate.message', 'search', [('message_id','=',message_id)])\r
+        ref_mail_id = None\r
        if not mail_id:\r
-               return None\r
+            ref_mail_id = execute( conn, 'execute', self._dbname, int(self._uid), self._pwd, 'mailgate.message', 'search', [('references','=',message_id)])\r
+            if ref_mail_id:\r
+                win32ui.MessageBox(str(ref_mail_id),"ref_mail_id")\r
+                address = execute( conn, 'execute', self._dbname, int(self._uid), self._pwd, 'mailgate.message','read',ref_mail_id[0],['model','res_id'])\r
+                win32ui.MessageBox(str(address),"address")\r
+                for key, vals in address.items():\r
+                    res_vals.append([key,vals])\r
+                return res_vals\r
+            return None\r
        address = execute( conn, 'execute', self._dbname, int(self._uid), self._pwd, 'mailgate.message','read',mail_id[0],['model','res_id'])\r
        for key, vals in address.items():\r
                res_vals.append([key,vals])\r