diff --git a/addons/crm/wizard/crm_forward_to_partner.py b/addons/crm/wizard/crm_forward_to_partner.py
index def6ddf1812..ff08bf12c46 100644
--- a/addons/crm/wizard/crm_forward_to_partner.py
+++ b/addons/crm/wizard/crm_forward_to_partner.py
@@ -21,7 +21,6 @@
##############################################################################
import base64
-import itertools
import time
import re
from osv import osv, fields
@@ -165,63 +164,25 @@ class crm_lead_forward_to_partner(osv.osv_memory):
email = self.pool.get('res.partner.address').browse(cr, uid, address_id).email
return {'value': {'email_to' : email}}
- def action_cancel(self, cr, uid, ids, context=None):
- return {'type' : 'ir.actions.act_window_close'}
-
def action_forward(self, cr, uid, ids, context=None):
"""
Forward the lead to a partner
"""
- if context is None:
- context = {}
-
- res_id = context.get('active_id', False)
-
- model = context.get('active_model', False)
- if not res_id or not model:
- return {}
-
- email_re = r'([^ ,<@]+@[^> ,]+)'
+
this = self.browse(cr, uid, ids[0], context=context)
-
- case_pool = self.pool.get(model)
+ case_pool = self.pool.get(context.get('active_model'))
+ res_id = context and context.get('active_id', False) or False
case = case_pool.browse(cr, uid, res_id, context=context)
- emails = [this.email_to]
- body = case_pool.format_body(this.body)
- email_from = this.email_from or False
+ context.update({'mail': 'forward'})
+ super(crm_lead_forward_to_partner, self).action_send(cr, uid, ids, context=context)
- # extract attachements from case and emails according to mode
- attachments = []
- attach_pool = self.pool.get('ir.attachment')
- direct_attachments = attach_pool.search(cr, uid, [('res_model', '=', 'crm.lead'), ('res_id', '=', res_id)], context=context)
- attachments += attach_pool.browse(cr, uid, direct_attachments, context=context)
- if this.history in ['latest', 'whole'] and case.message_ids:
- msgs = case.message_ids
- if this.history == 'latest':
- msgs = msgs[:1]
- attachments.extend(itertools.chain(*[m.attachment_ids for m in msgs]))
- attach = [(a.datas_fname or a.name, base64.decodestring(a.datas)) for a in attachments if a.datas]
-
- result = tools.email_send(
- email_from,
- emails,
- this.subject,
- body,
- openobject_id=str(case.id),
- attach=attach,
- reply_to=case.section_id.reply_to,
- )
-
- if result:
- case_pool.history(cr, uid, [case], _('Forward'), history=True, email=this.email_to, subject=this.subject, details=body, email_from=email_from, attach=attach)
- to_write = {'date_assign': time.strftime('%Y-%m-%d')}
- if (this.name == 'partner' and this.partner_id):
- to_write['partner_assigned_id'] = this.partner_id.id
- case_pool.write(cr, uid, case.id, to_write)
- else:
- raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.'))
+ to_write = {'date_assign': time.strftime('%Y-%m-%d')}
+ if (this.name == 'partner' and this.partner_id):
+ to_write['partner_assigned_id'] = this.partner_id.id
+ case_pool.write(cr, uid, case.id, to_write)
+ email_re = r'([^ ,<@]+@[^> ,]+)'
email_cc = re.findall(email_re, case.email_cc or '')
new_cc = ''
for to in this.email_to.split(','):
diff --git a/addons/crm/wizard/crm_send_email.py b/addons/crm/wizard/crm_send_email.py
index 02acee1c1d2..58aa729e454 100644
--- a/addons/crm/wizard/crm_send_email.py
+++ b/addons/crm/wizard/crm_send_email.py
@@ -20,11 +20,12 @@
#
##############################################################################
+from crm import crm
from osv import osv, fields
from tools.translate import _
import base64
+import itertools
import tools
-from crm import crm
class crm_send_new_email_attachment(osv.osv_memory):
_name = 'crm.send.mail.attachment'
@@ -54,15 +55,9 @@ class crm_send_new_email(osv.osv_memory):
'attachment_ids' : fields.one2many('crm.send.mail.attachment', 'wizard_id'),
}
- def action_cancel(self, cr, uid, ids, context=None):
- """ Closes Phonecall to Opportunity form
- """
- return {'type':'ir.actions.act_window_close'}
-
def action_send(self, cr, uid, ids, context=None):
""" This sends an email to ALL the addresses of the selected partners.
"""
-
hist_obj = self.pool.get('mailgate.message')
if not context:
@@ -83,18 +78,32 @@ class crm_send_new_email(osv.osv_memory):
message_id = None
ref_id = None
- case = case_pool.browse(cr, uid, res_id)
+ case = case_pool.browse(cr, uid, res_id, context=context)
if context.get('mail', 'new') == 'new':
if case.message_ids:
message_id = case.message_ids[0].message_id
+ elif context.get('mail') == 'forward':
+ # extract attachements from case and emails according to mode
+ attachments = []
+ attach_pool = self.pool.get('ir.attachment')
+ direct_attachments = attach_pool.search(cr, uid, [('res_model', '=', 'crm.lead'), ('res_id', '=', res_id)], context=context)
+ attachments += attach_pool.browse(cr, uid, direct_attachments, context=context)
+ if obj.history in ['latest', 'whole'] and case.message_ids:
+ msgs = case.message_ids
+ if obj.history == 'latest':
+ msgs = msgs[:1]
+ attachments.extend(itertools.chain(*[m.attachment_ids for m in msgs]))
+ attach_all = [(a.datas_fname or a.name, base64.decodestring(a.datas)) for a in attachments if a.datas]
+ attach += attach_all
+
else:
- hist = hist_obj.browse(cr, uid, res_id)
+ hist = hist_obj.browse(cr, uid, res_id, context=context)
message_id = hist.message_id
model = hist.model
case_pool = self.pool.get(model)
res_id = hist.res_id
ref_id = hist.ref_id
- case = case_pool.browse(cr, uid, res_id)
+ case = case_pool.browse(cr, uid, res_id, context=context)
emails = [obj.email_to]
email_cc = obj.email_cc and obj.email_cc.split(',') or ''
emails = filter(None, emails)
@@ -121,7 +130,8 @@ class crm_send_new_email(osv.osv_memory):
if not flag:
raise osv.except_osv(_('Error!'), _('Unable to send mail. Please check SMTP is configured properly.'))
- case_pool.history(cr, uid, [case], _('Send'), history=True, \
+ msg_dict = {'new': 'Send', 'reply': 'Reply', 'forward': 'Forward'}
+ case_pool.history(cr, uid, [case], _(msg_dict[context.get('mail', 'new')]), history=True, \
email=obj.email_to, details=body, \
subject=obj.subject, email_from=email_from, \
email_cc=', '.join(email_cc), message_id=message_id, \
diff --git a/addons/crm/wizard/crm_send_email_view.xml b/addons/crm/wizard/crm_send_email_view.xml
index aac7d854b88..77202a19f6c 100644
--- a/addons/crm/wizard/crm_send_email_view.xml
+++ b/addons/crm/wizard/crm_send_email_view.xml
@@ -36,7 +36,7 @@
-
+