diff --git a/addons/crm/crm.py b/addons/crm/crm.py index bd366fff5c3..968900e07f6 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -203,9 +203,12 @@ class crm_case(object): address = self.pool.get('res.partner.address').browse(cr, uid, add) return {'value': {'email_from': address.email}} - def _history(self, cr, uid, cases, keyword, history=False, email=False, details=None, email_from=False, message_id=False, context={}): + def _history(self, cr, uid, cases, keyword, history=False, email=False, details=None, email_from=False, message_id=False, attach=[], context={}): mailgate_pool = self.pool.get('mailgate.thread') - return mailgate_pool._history(cr, uid, cases, keyword, history=history, email=email, details=details, email_from=email_from, message_id=message_id, context=context) + return mailgate_pool._history(cr, uid, cases, keyword, history=history,\ + email=email, details=details, \ + email_from=email_from, message_id=message_id,\ + attach=attach, context=context) def case_open(self, cr, uid, ids, *args): """Opens Case diff --git a/addons/crm/wizard/crm_send_email.py b/addons/crm/wizard/crm_send_email.py index 8458172104a..e302ab27b5a 100644 --- a/addons/crm/wizard/crm_send_email.py +++ b/addons/crm/wizard/crm_send_email.py @@ -99,7 +99,7 @@ class crm_send_new_email(osv.osv_memory): model = hist.model_id.model model_pool = self.pool.get(model) res_ids = model_pool.search(cr, uid, [('thread_id','=', hist.thread_id.id)]) - res_id = res_ids and res_ids[0] or False + res_id = res_ids and res_ids[0] or False case = model_pool.browse(cr, uid, res_id) emails = [obj.email_to] + (obj.email_cc or '').split(',') emails = filter(None, emails) @@ -107,7 +107,11 @@ class crm_send_new_email(osv.osv_memory): body = case_pool.format_body(body) email_from = getattr(obj, 'email_from', False) - case_pool._history(cr, uid, [case], _('Send'), history=True, email=obj.email_to, details=body, email_from=email_from, message_id=message_id) + + case_pool._history(cr, uid, [case], _('Send'), history=True, \ + email=obj.email_to, details=body, \ + email_from=email_from, message_id=message_id, \ + attach=attach) x_headers = dict() #x_headers = { diff --git a/addons/mail_gateway/mail_gateway.py b/addons/mail_gateway/mail_gateway.py index 6bb295df15f..500c293dd9a 100644 --- a/addons/mail_gateway/mail_gateway.py +++ b/addons/mail_gateway/mail_gateway.py @@ -21,6 +21,7 @@ from osv import osv, fields import time +import base64 class one2many_domain(fields.one2many): def set(self, cr, obj, id, field, values, user=None, context=None): @@ -54,7 +55,7 @@ class mailgate_thread(osv.osv): 'log_ids': one2many_domain('mailgate.message', 'thread_id', 'Logs', domain=[('history', '=', False)], required=False), } - def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, email_from=False, message_id=False, context={}): + def __history(self, cr, uid, cases, keyword, history=False, email=False, details=None, email_from=False, message_id=False, attach=[], context={}): """ @param self: The object pointer @param cr: the current row, from the database cursor, @@ -64,6 +65,7 @@ class mailgate_thread(osv.osv): @param history: Value True/False, If True it makes entry in case History otherwise in Case Log @param email: Email address if any @param details: Details of case history if any + @param atach: Attachment sent in email @param context: A standard dictionary for contextual values""" if not context: context = {} @@ -72,8 +74,9 @@ class mailgate_thread(osv.osv): cases = self.pool.get(context['model']).browse(cr, uid, cases, context=context) model_obj = self.pool.get('ir.model') - + att_obj = self.pool.get('ir.attachment') obj = self.pool.get('mailgate.message') + for case in cases: model_ids = model_obj.search(cr, uid, [('model', '=', case._name)]) data = { @@ -84,8 +87,11 @@ class mailgate_thread(osv.osv): 'thread_id': case.thread_id.id, 'message_id': message_id, } - + attachments = [] if history: + for att in attach: + attachments.append(att_obj.create(cr, uid, {'name': att[0], 'datas': base64.encodestring(att[1])})) + data = { 'name': keyword, 'history': True, @@ -102,6 +108,7 @@ class mailgate_thread(osv.osv): 'partner_id': case.partner_id.id, 'thread_id': case.thread_id.id, 'message_id': message_id, + 'attachment_ids': [(6, 0, attachments)] } res = obj.create(cr, uid, data, context) return True diff --git a/addons/mail_gateway/mail_gateway_view.xml b/addons/mail_gateway/mail_gateway_view.xml index e4333f05580..ccb1ae7cdb5 100644 --- a/addons/mail_gateway/mail_gateway_view.xml +++ b/addons/mail_gateway/mail_gateway_view.xml @@ -30,7 +30,7 @@ - +