From 529d44a80ed4e3246cd990979e116af3c32ce462 Mon Sep 17 00:00:00 2001 From: "uco (OpenERP)" Date: Thu, 4 Feb 2010 12:56:45 +0530 Subject: [PATCH] [IMP] crm, base_action_rule : Improved methods. bzr revid: uco@tinyerp.co.in-20100204072645-6nvg0b3j11f1hyxe --- addons/base_action_rule/base_action_rule.py | 40 ++++++++++++++++++++- addons/crm/crm.py | 5 ++- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/addons/base_action_rule/base_action_rule.py b/addons/base_action_rule/base_action_rule.py index bcc0bbea976..69b84af04ad 100644 --- a/addons/base_action_rule/base_action_rule.py +++ b/addons/base_action_rule/base_action_rule.py @@ -1,5 +1,6 @@ import time import mx.DateTime +import re import tools from osv import fields, osv, orm @@ -57,7 +58,6 @@ class base_action_rule(osv.osv): if rule.id not in checkids: lastDate = mx.DateTime.strptime(rule.create_date[:19], '%Y-%m-%d %H:%M:%S') history_obj.create(cr, uid, {'rule_id': rule.id, 'res_id': rule.name.id, 'date_action_last': lastDate, 'date_action_next': action_next}) - for rule in rules: obj = self.pool.get(rule.name.model) rec_ids = obj.search(cr, uid, []) @@ -127,6 +127,44 @@ class base_action_rule(osv.osv): if action.server_action_id: context.update({'active_id': data.id,'active_ids': [data.id]}) self.pool.get('ir.actions.server').run(cr, uid, [action.server_action_id.id], context) + write = {} + if action.act_state: + data.state = action.act_state + write['state'] = action.act_state + if action.act_user_id: + data.user_id = action.act_user_id + write['user_id'] = action.act_user_id.id + if action.act_priority: + data.priority = action.act_priority + write['priority'] = action.act_priority + if action.act_email_cc: + if '@' in (data.email_cc or ''): + emails = data.email_cc.split(",") + if action.act_email_cc not in emails:# and '<'+str(action.act_email_cc)+">" not in emails: + write['email_cc'] = data.email_cc+','+action.act_email_cc + else: + write['email_cc'] = action.act_email_cc + obj.write(cr, uid, [data.id], write, context) + if action.act_remind_user: + obj.remind_user(cr, uid, [data.id], context, attach=action.act_remind_attach) + if action.act_remind_partner: + obj.remind_partner(cr, uid, [data.id], context, attach=action.act_remind_attach) + if action.act_method: + getattr(caseobj, 'act_method')(cr, uid, [data.id], action, context) + emails = [] + if action.act_mail_to_user: + if data.user_id and data.user_id.address_id: + emails.append(data.user_id.address_id.email) + if action.act_mail_to_partner: + emails.append(data.email_from) + if action.act_mail_to_watchers: + emails += (action.act_email_cc or '').split(',') + if action.act_mail_to_email: + emails += (action.act_mail_to_email or '').split(',') + emails = filter(None, emails) + if len(emails) and action.act_mail_body: + emails = list(set(emails)) + obj.email_send(cr, uid, data, emails, action.act_mail_body) for hist in history: if hist[3]: base = hist[4] diff --git a/addons/crm/crm.py b/addons/crm/crm.py index 916f8cec750..aade125d08c 100644 --- a/addons/crm/crm.py +++ b/addons/crm/crm.py @@ -325,7 +325,10 @@ class base_action_rule(osv.osv): if len(emails) and action.act_mail_body: emails = list(set(emails)) caseobj.email_send(cr, uid, cs, emails, action.act_mail_body) - break + for hist in history: + if hist[3]: + base = hist[4] + history_obj.write(cr, uid, [hist[0]], {'date_action_last': base, 'date_action_next': action_next}) action_ids = newactions level -= 1 return True