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