[IMP] crm, base_action_rule : Improved methods.

bzr revid: uco@tinyerp.co.in-20100204072645-6nvg0b3j11f1hyxe
This commit is contained in:
uco (OpenERP) 2010-02-04 12:56:45 +05:30
parent 309ca5e6f2
commit 529d44a80e
2 changed files with 43 additions and 2 deletions

View File

@ -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]

View File

@ -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