[MERGE]
authorHarry (OpenERP) <hmo@tinyerp.com>
Thu, 11 Nov 2010 13:50:52 +0000 (19:20 +0530)
committerHarry (OpenERP) <hmo@tinyerp.com>
Thu, 11 Nov 2010 13:50:52 +0000 (19:20 +0530)
bzr revid: hmo@tinyerp.com-20101111135052-y17ga2cfk3hohblr

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

@@@ -54,11 -50,11 +48,9 @@@ global NewCon
  # Retrieves registered XMLRPC connection\r
  def GetConn():\r
      d=Dispatch("Python.OpenERP.XMLRpcConn")\r
 -    mngr = manager.GetManager()\r
      return d\r
\r
  class Configuration:\r
      def OnClick(self, button, cancel):\r
 -        import win32ui\r
          try:\r
              mngr = manager.GetManager()\r
              mngr.ShowManager()\r
@@@ -166,43 -169,45 +165,44 @@@ class XMLRpcConn(object)
        except Exception,e:\r
                win32ui.MessageBox(str(e),"Archive To OpenERP")\r
                return\r
 -      new_mail=eml.generateEML(mail)\r
        attachments=mail.Attachments\r
        for rec in recs: #[('res.partner', 3, 'Agrolait')]\r
-               model = rec[0]\r
-               res_id = rec[1]\r
-               #Check if mailgate installed\r
-               object_id = execute ( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','search',[('model','=','mailgate.message')])\r
-               if not object_id:\r
-                       win32ui.MessageBox("Mailgate is not installed on your configured database '%s' !!\n\nPlease install it to archive the mail."%(self._dbname),"Mailgate not installed",win32con.MB_ICONERROR)\r
-                       return\r
-               object_ids = execute ( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','search',[('model','=',model)])\r
-               object_name  = execute( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','read',object_ids,['name'])[0]['name']\r
-               #Reading the Object ir.model Name\r
-               ext_ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'mailgate.message','search',[('message_id','=',message_id),('model','=',model),('res_id','=',res_id)])\r
-               if ext_ids:\r
-                       name = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,model,'read',res_id,['name'])['name']\r
-                       ext_msg += """This mail is already archived to {0} '{1}'.\n""".format(object_name,name)\r
-                       flag = True\r
-                       continue\r
-               msg = {\r
-                       'subject':mail.Subject,\r
-                       'date':str(mail.ReceivedTime),\r
-                       'body':mail.Body,\r
-                       'cc':mail.CC,\r
-                       'from':mail.SenderEmailAddress,\r
-                       'to':mail.To,\r
-                       'message-id':message_id,\r
-                       'references':ustr(referances),\r
-               }\r
-               obj_list= ['crm.lead','project.issue','hr.applicant','res.partner']\r
-               if rec[0] not in obj_list:\r
-                       ids = self.CreateEmailAttachment(rec,mail)\r
-               result = {}\r
-               if attachments:\r
-                       result = self.MakeAttachment([rec], mail)\r
-               attachment_ids = result.get(model, {}).get(res_id, [])\r
-               new_msg += """- {0} : {1}\n""".format(object_name,str(rec[2]))\r
-               flag = True\r
+             model = rec[0]\r
+             res_id = rec[1]\r
+             #Check if mailgate installed\r
+             object_id = execute ( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','search',[('model','=','mailgate.message')])\r
+             if not object_id:\r
+               win32ui.MessageBox("Mailgate is not installed on your configured database '%s' !!\n\nPlease install it to archive the mail."%(self._dbname),"Mailgate not installed",win32con.MB_ICONERROR)\r
+               return\r
+             object_ids = execute ( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','search',[('model','=',model)])\r
+             object_name  = execute( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','read',object_ids,['name'])[0]['name']\r
+             #Reading the Object ir.model Name\r
+             ext_ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'mailgate.message','search',[('message_id','=',message_id),('model','=',model),('res_id','=',res_id)])\r
+             if ext_ids:\r
+               name = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,model,'read',res_id,['name'])['name']\r
+               ext_msg += """This mail is already archived to {0} '{1}'.\n""".format(object_name,name)\r
+               flag = True\r
+               continue\r
+             msg = {\r
+               'subject':mail.Subject,\r
+               'date':str(mail.ReceivedTime),\r
+               'body':mail.Body,\r
+               'cc':mail.CC,\r
+               'from':mail.SenderEmailAddress,\r
+               'to':mail.To,\r
+               'message-id':message_id,\r
+               'references':ustr(referances),\r
+             }\r
+             obj_list= ['crm.lead','project.issue','hr.applicant','res.partner']\r
+             if rec[0] not in obj_list:\r
+                 ids = self.CreateEmailAttachment(rec,mail)\r
+             result = {}\r
+             if attachments:\r
+               result = self.MakeAttachment([rec], mail)\r
+             attachment_ids = result.get(model, {}).get(res_id, [])\r
+             ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'email.server.tools','history',model, res_id, msg, attachment_ids)\r
+             new_msg += """- {0} : {1}\n""".format(object_name,str(rec[2]))\r
+             flag = True\r
  \r
        if flag:\r
                t = """Mail archived Successfully with attachments.\n"""+ext_msg\r
                        obj_list.append((object['id'], ustr(object['name'])))\r
                obj_list.sort(lambda x, y: cmp(x[1],y[1]))\r
        return obj_list\r
++\r
      def FindCountryForState(self, state_search=''):\r
 -      import win32ui\r
 -      res_vals = []\r
        conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')\r
        ids = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'res.country.state','search',[('name','=',ustr(state_search))])\r
        if not ids:\r
        object = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'res.country.state','read',ids)[0]\r
        country = object['country_id'][1]\r
        return country\r
-     def CreateEmailAttachment(self, rec, email):\r
++\r
+     def CreateEmailAttachment(self, rec, mail):\r
 -      result = {}\r
        conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')\r
-         att_folder_path = os.path.abspath(os.path.dirname("%temp%\\"))\r
-         if not os.path.exists(att_folder_path):\r
-               os.makedirs(att_folder_path)\r
          obj = rec[0]\r
          obj_id = rec[1]\r
--        res={}\r
++        res = {}\r
          res['res_model'] = obj\r
          ls = ['*', '/', '\\', '<', '>', ':', '?', '"', '|', '\t', '\n',':','~']\r
-         sub = (email.Subject).replace(' ','')\r
-         if sub.strip() == '':\r
-               sub = 'NO SBUJECT'\r
-         fn = sub\r
+         fn = (mail.Subject).replace(' ','')\r
          for c in ls:\r
                fn = fn.replace(c,'')\r
          if len(fn) > 64:\r
                        l = 64 - len(fn)\r
                        f = fn.split('.')\r
                        fn = f[0][0:l] + '.' + f[-1]\r
-         fn = fn+'.txt'\r
-         f=open(fn,"w")\r
-         f.writelines(ustr(email.Body).encode('iso-8859-1'))\r
+         fn = fn[:-4]+'.txt'\r
 -        f=open(fn,"w")\r
++        f = open(fn,"w")\r
+         body = mail.Body.encode("utf-8")\r
+         f.writelines(body)\r
          f.close()\r
-         f=open(fn,"r")\r
+         f=open(fn,"rb")\r
          content = "".join(f.readlines()).encode('base64')\r
          f.close()\r
-         res['name'] = ustr(sub)\r
+         res['name'] = ustr((mail.Subject).replace(' ',''))\r
          res['datas_fname'] = ustr(fn)\r
          res['datas'] = content\r
          res['res_id'] = obj_id\r