From fe0030c8f5a3e1c3f2b5ccc0a600111746ef3da7 Mon Sep 17 00:00:00 2001 From: Dhara Date: Thu, 24 Jun 2010 16:29:50 +0530 Subject: [PATCH] [FIX] marketing_campaign : view and error on email,server action fix bzr revid: dhara@dhara-laptop-20100624105950-gg15cr9gbuufqaj0 --- .../marketing_campaign/marketing_campaign.py | 28 +++++++++++++------ .../marketing_campaign_view.xml | 4 ++- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py index feeaa074b6d..c36b669ffcc 100644 --- a/addons/marketing_campaign/marketing_campaign.py +++ b/addons/marketing_campaign/marketing_campaign.py @@ -73,11 +73,19 @@ you required for the campaign"), campaign = self.browse(cr, uid, ids[0]) if not campaign.activity_ids : raise osv.except_osv("Error", "There is no activitity in the campaign") - act_ids = [ act_id.id for act_id in campaign.activity_ids] - act_ids = self.pool.get('marketing.campaign.activity').search(cr, uid, - [('id', 'in', act_ids), ('start', '=', True)]) + actvity_ids = [ act_id.id for act_id in campaign.activity_ids] + act_obj = self.pool.get('marketing.campaign.activity') + act_ids = act_obj.search(cr, uid, [('id', 'in', actvity_ids), + ('start', '=', True)]) if not act_ids : raise osv.except_osv("Error", "There is no starting activitity in the campaign") + act_ids = act_obj.search(cr, uid, [('id', 'in', actvity_idsf), + ('type', '=', 'email')]) + for activity in act_obj.browse(cr, uid, act_ids): + if not activity.email_template_id.enforce_from_account : + raise osv.except_osv("Error", "Campaign cannot be start : Email Account is missing in email activity") + if activity.email_template_id.enforce_from_account.state != 'approved' : + raise osv.except_osv("Error", "Campaign cannot be start : Email Account is not approved for email activity") self.write(cr, uid, ids, {'state': 'running'}) return True @@ -239,7 +247,7 @@ class marketing_campaign_activity(osv.osv): def __init__(self, *args): self._actions = {'paper' : self.process_wi_report, 'email' : self.process_wi_email, - 'server_action' : self.process_wi_action, + 'action' : self.process_wi_action, } return super(marketing_campaign_activity, self).__init__(*args) @@ -273,13 +281,15 @@ class marketing_campaign_activity(osv.osv): return True def process_wi_email(self, cr, uid, activity, workitem, context=None): - return self.pool.get('email.template').generate_mail(cr, uid, activity.email_template_id.id, [workitem.res_id], context=context) + return self.pool.get('email.template').generate_mail(cr, uid, + activity.email_template_id.id, + [workitem.res_id], context=context) def process_wi_action(self, cr, uid, activity, workitem, context={}): context = {} server_obj = self.pool.get('ir.actions.server') - server_obj.run(cr, uid, [activity.server_action_id.id], context) - return True + context['active_id'] = workitem.res_id + return server_obj.run(cr, uid, [activity.server_action_id.id], context) def process(self, cr, uid, act_id, wi_id, context={}): activity = self.browse(cr, uid, act_id) @@ -339,7 +349,7 @@ class marketing_campaign_workitem(osv.osv): type='many2one', relation='marketing.campaign', string='Campaign', readonly=True), 'object_id': fields.related('segment_id', 'campaign_id', 'object_id', type='many2one', relation='ir.model', string='Object', select=1), - 'res_id': fields.integer('Resource ID', select=1), + 'res_id': fields.integer('Resource ID', select=1, readonly=1), 'res_name': fields.function(_res_name_get, method=True, string='Resource Name', type="char", size=64), 'date': fields.datetime('Execution Date'), 'partner_id': fields.many2one('res.partner', 'Partner', select=1), @@ -408,7 +418,7 @@ class marketing_campaign_workitem(osv.osv): else: vals = {'state': 'exception'} if type(result) == type({}) and 'error_msg' in result: - vals['error_msg'] = result['error_msg'] + vals['error_msg'] = result['error_msg'] self.write(cr, uid, wi.id, vals) else: self.write(cr, uid, wi.id, {'state': 'cancelled'}) diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml index f8dfc003369..f954d5de006 100644 --- a/addons/marketing_campaign/marketing_campaign_view.xml +++ b/addons/marketing_campaign/marketing_campaign_view.xml @@ -28,6 +28,7 @@ + @@ -44,7 +45,7 @@ - + @@ -366,6 +367,7 @@ +