Exemplo n.º 1
0
 def ArchiveToOpenERP(self, recs, mail):
     import win32ui, win32con
     conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object')
     import eml
     eml_path=eml.generateEML(mail)
     att_name = ustr(eml_path.split('\\')[-1])
     cnt=1
     for rec in recs: #[('res.partner', 3, 'Agrolait')]
         cnt+=1
         obj = rec[0]
         obj_id = rec[1]
         ids=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','search',[('res_id','=',obj_id),('name','=',att_name)])
         if ids:
             name=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,obj,'read',obj_id,['name'])['name']
             msg="This mail is already attached to object with name '%s'"%name
             win32ui.MessageBox(msg,"Make Attachment",win32con.MB_ICONINFORMATION)
             continue
         sub = ustr(mail.Subject)
         if len(sub) > 60:
             l = 60 - len(sub)
             sub = sub[0:l]
         res={}
         res['res_model'] = obj
         content = "".join(open(eml_path,"r").readlines()).encode('base64')
         res['name'] = att_name
         res['datas_fname'] = sub+".eml"
         res['datas'] = content
         res['res_id'] = obj_id
         execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','create',res)
Exemplo n.º 2
0
 def ArchiveToOpenERP(self, recs, mail):
     import win32ui, win32con
     conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object')
     import eml
     eml_path = eml.generateEML(mail)
     att_name = ustr(eml_path.split('\\')[-1])
     cnt = 1
     for rec in recs:  #[('res.partner', 3, 'Agrolait')]
         cnt += 1
         obj = rec[0]
         obj_id = rec[1]
         ids = execute(conn, 'execute', self._dbname, int(self._uid),
                       self._pwd, 'ir.attachment', 'search',
                       [('res_id', '=', obj_id), ('name', '=', att_name)])
         if ids:
             name = execute(conn, 'execute', self._dbname, int(self._uid),
                            self._pwd, obj, 'read', obj_id,
                            ['name'])['name']
             msg = "This mail is already attached to object with name '%s'" % name
             win32ui.MessageBox(msg, "Make Attachment",
                                win32con.MB_ICONINFORMATION)
             continue
         sub = ustr(mail.Subject)
         if len(sub) > 60:
             l = 60 - len(sub)
             sub = sub[0:l]
         res = {}
         res['res_model'] = obj
         content = "".join(open(eml_path, "r").readlines()).encode('base64')
         res['name'] = att_name
         res['datas_fname'] = sub + ".eml"
         res['datas'] = content
         res['res_id'] = obj_id
         execute(conn, 'execute', self._dbname, int(self._uid), self._pwd,
                 'ir.attachment', 'create', res)
Exemplo n.º 3
0
 def CreateEmailAttachment(self, rec, mail):
     import eml
     email, path = eml.generateEML(mail)
 	conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')
     obj = rec[0]
     obj_id = rec[1]
     res = {}
     res['res_model'] = obj
     ls = ['*', '/', '\\', '<', '>', ':', '?', '"', '|', '\t', '\n',':','~']
     fn = (mail.Subject).replace(' ','')
     for c in ls:
     	fn = fn.replace(c,'')
     if len(fn) > 64:
     	l = 64 - len(fn)
     	f = fn.split('-')
     	fn = '-'.join(f[1:])
     	if len(fn) > 64:
     		l = 64 - len(fn)
     		f = fn.split('.')
     		fn = f[0][0:l] + '.' + f[-1]
     fn = fn[:-4]+".eml"
     f = open(path)
     content = "".join(f.readlines()).encode('base64')
     f.close()
     res['name'] = fn
     res['datas_fname'] = fn
     res['datas'] = content
     res['res_id'] = obj_id
     id = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','create',res)
     return id
Exemplo n.º 4
0
    def ArchiveToOpenERP(self, recs, mail):
        import win32ui, win32con
        conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object')
        import eml
        msg = ""
        ext_msg = ""
        eml_path = eml.generateEML(mail)
        att_name = ustr(eml_path.split('\\')[-1])
        cnt = 1
        flag = False
        for rec in recs:  #[('res.partner', 3, 'Agrolait')]
            cnt += 1
            obj = rec[0]
            obj_id = rec[1]
            ids = execute(conn, 'execute', self._dbname, int(self._uid),
                          self._pwd, 'ir.attachment', 'search',
                          [('res_id', '=', obj_id), ('name', '=', att_name)])
            object_ids = execute(conn, 'execute', self._dbname, int(self._uid),
                                 self._pwd, 'ir.model', 'search',
                                 [('model', '=', obj)])
            object_name = execute(conn, 'execute', self._dbname,
                                  int(self._uid), self._pwd, 'ir.model',
                                  'read', object_ids, ['name'])[0]['name']
            sub = ustr(mail.Subject)
            if ids:
                name = execute(conn, 'execute', self._dbname, int(self._uid),
                               self._pwd, obj, 'read', obj_id,
                               ['name'])['name']
                ext_msg += """  - File "{0}.eml" is already archived to {1} "{2}" .
""".format(sub, object_name, name)
                continue
            if len(sub) > 60:
                l = 60 - len(sub)
                sub = sub[0:l]
            res = {}
            res['res_model'] = obj
            content = "".join(open(eml_path, "r").readlines()).encode('base64')
            res['name'] = att_name
            res['datas_fname'] = sub + ".eml"
            res['datas'] = content
            res['res_id'] = obj_id
            execute(conn, 'execute', self._dbname, int(self._uid), self._pwd,
                    'ir.attachment', 'create', res)
            msg += """  - File "{0}.eml"  archived to {1} "{2}".
""".format(sub, object_name, str(rec[2]))
            flag = True
        if flag:
            t = "Mail archived to OpenERP.\nArchive Summary : \n"
            if ext_msg != "":
                t += "\nAlready Attached Documents : \n" + ext_msg + "\n"
            t += "Newly Attachment Documents:\n" + msg
            win32ui.MessageBox(t, "Archive To OpenERP",
                               win32con.MB_ICONINFORMATION)

        return flag
Exemplo n.º 5
0
    def ArchiveToOpenERP(self, recs, mail):
        import win32ui, win32con
        conn = xmlrpclib.ServerProxy(self._uri + '/xmlrpc/object')
        import eml
        msg = ""
        ext_msg = ""
        eml_path=eml.generateEML(mail)
        att_name = ustr(eml_path.split('\\')[-1])
        cnt=1
        flag=False
        for rec in recs: #[('res.partner', 3, 'Agrolait')]
            cnt+=1
            obj = rec[0]
            obj_id = rec[1]
            ids=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','search',[('res_id','=',obj_id),('name','=',att_name)])
            object_ids = execute ( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','search',[('model','=',obj)])
            object_name = execute( conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.model','read',object_ids,['name'])[0]['name']
            sub = ustr(mail.Subject)
            if ids:
                name=execute(conn,'execute',self._dbname,int(self._uid),self._pwd,obj,'read',obj_id,['name'])['name']
                ext_msg+="""  - File "{0}.eml" is already archived to {1} "{2}" .
""".format(sub,object_name,name)
                continue
            if len(sub) > 60:
                l = 60 - len(sub)
                sub = sub[0:l]
            res={}
            res['res_model'] = obj
            content = "".join(open(eml_path,"r").readlines()).encode('base64')
            res['name'] = att_name
            res['datas_fname'] = sub+".eml"
            res['datas'] = content
            res['res_id'] = obj_id
            execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'ir.attachment','create',res)
            msg+="""  - File "{0}.eml"  archived to {1} "{2}".
""".format(sub,object_name,str(rec[2]))
            flag=True
        if flag:
            t = "Mail archived to OpenERP.\nArchive Summary : \n"
            if ext_msg != "" :
                t+="\nAlready Attached Documents : \n"+ext_msg +"\n"
            t+="Newly Attachment Documents:\n"+msg
            win32ui.MessageBox(t,"Archive To OpenERP",win32con.MB_ICONINFORMATION)

        return flag
Exemplo n.º 6
0
 def CreateCase(self, section, mail, partner_ids, with_attachments=True):
 	import eml
 	flag = False
 	id = -1
 	try:
         conn = xmlrpclib.ServerProxy(self._uri+ '/xmlrpc/object')
         email, path = eml.generateEML(mail)
         message_id   = None
         session = win32com.client.Dispatch("MAPI.session")
         session.Logon('Outlook')
         objMessage = session.GetMessage(mail.EntryID, mail.Parent.StoreID)
         objFields = objMessage.Fields
         strheader = objFields.Item(mapitags.PR_TRANSPORT_MESSAGE_HEADERS)
         strheader = ustr(strheader).encode('iso-8859-1')
         headers = {}
         strheader = strheader.replace("\n ", " ").splitlines()
         for line in strheader:
             split_here = line.find(":")
             headers[line[:split_here]] = line[split_here:]
         temp1 = headers.get('Message-ID')
         temp2 = headers.get('Message-Id')
         if temp1 == None:    message_id = temp2
         if temp2 == None:    message_id = temp1
         startCut = message_id.find("<")
         endCut = message_id.find(">")
         message_id = message_id[startCut:endCut+1]
         email.replace_header('Message-Id',message_id)
         id = execute(conn,'execute',self._dbname,int(self._uid),self._pwd,'email.server.tools','process_email',section, str(email))
         if id > 0:
         	flag = True
         	return flag
         else:
         	flag = False
         	return flag
     except Exception,e:
 		win32ui.MessageBox("Create Case\n"+str(e),"Mail Reading Error")
 		return flag