From 252987ae32b5ee8975602d4fccdf7ed2609d3c65 Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Tue, 25 May 2010 12:05:30 +0530 Subject: [PATCH 1/8] [IMP]: mail_gateway: Improvement in (email) history for attachments bzr revid: rpa@tinyerp.com-20100525063530-736inv1bz9xzo9j8 --- addons/crm/crm.py | 7 +++++-- addons/crm/wizard/crm_send_email.py | 8 ++++++-- addons/mail_gateway/mail_gateway.py | 13 ++++++++++--- addons/mail_gateway/mail_gateway_view.xml | 2 +- 4 files changed, 22 insertions(+), 8 deletions(-) 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 @@ - + From c48d6943071645f92bfd508a0205943cdbbd89cd Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Tue, 25 May 2010 12:49:37 +0530 Subject: [PATCH 2/8] [IMP]: Improvement in views for communication history(Added attachments field) bzr revid: rpa@tinyerp.com-20100525071937-x5yvqdln1waqymj0 --- addons/crm/crm_lead_view.xml | 21 +- addons/crm/crm_opportunity_view.xml | 664 +++++++++--------- addons/crm_claim/crm_claim_view.xml | 57 +- .../crm_fundraising/crm_fundraising_view.xml | 23 +- addons/crm_helpdesk/crm_helpdesk_view.xml | 23 +- addons/event/event_view.xml | 45 +- addons/hr_recruitment/hr_recruitment_view.xml | 47 +- addons/project_issue/project_issue_view.xml | 35 +- 8 files changed, 484 insertions(+), 431 deletions(-) diff --git a/addons/crm/crm_lead_view.xml b/addons/crm/crm_lead_view.xml index c1d64f1b6e3..7a9c45f11e2 100644 --- a/addons/crm/crm_lead_view.xml +++ b/addons/crm/crm_lead_view.xml @@ -161,16 +161,21 @@ - - + + + + + + + +