From 4c849ee4d68be0d143f7c5e078220ca97807d212 Mon Sep 17 00:00:00 2001 From: "rpa (Open ERP)" Date: Thu, 26 Aug 2010 15:05:40 +0530 Subject: [PATCH] [IMP]: marketing_campaign: Improvement in search view of Followup(workitem), Implemented fnct_search for searching according to resource name bzr revid: rpa@tinyerp.com-20100826093540-zsl9j873iyqek52c --- .../marketing_campaign/marketing_campaign.py | 31 +++++++++++++++++-- .../marketing_campaign_view.xml | 13 +++++--- 2 files changed, 38 insertions(+), 6 deletions(-) diff --git a/addons/marketing_campaign/marketing_campaign.py b/addons/marketing_campaign/marketing_campaign.py index 9fcacf6baf7..50eb52cc8f5 100644 --- a/addons/marketing_campaign/marketing_campaign.py +++ b/addons/marketing_campaign/marketing_campaign.py @@ -549,6 +549,33 @@ class marketing_campaign_workitem(osv.osv): res[wi.id] = ng[0][1] return res + def _resource_search(self, cr, uid, obj, name, args, domain=None, context=None): + """Returns id of workitem whose resource_name matches with the given name""" + if context is None: + context = {} + if not len(args): + return [] + + condition = [] + final_ids = [] + + cr.execute("""select w.id, w.res_id, m.model \ + from marketing_campaign_workitem w \ + left join marketing_campaign_activity a on (a.id=w.activity_id)\ + left join marketing_campaign c on (c.id=a.campaign_id)\ + left join ir_model m on (m.id=c.object_id) + """) + res = cr.fetchall() + for id, res_id, model in res: + model_pool = self.pool.get(model) + for arg in args: + if arg[1] == 'ilike': + condition.append((model_pool._rec_name, 'ilike', arg[2])) + res_ids = model_pool.search(cr, uid, condition, context=context) + if res_id in res_ids: + final_ids.append(id) + return [('id', 'in', final_ids)] + _columns = { 'segment_id': fields.many2one('marketing.campaign.segment', 'Segment', readonly=True), 'activity_id': fields.many2one('marketing.campaign.activity','Activity', @@ -556,9 +583,9 @@ class marketing_campaign_workitem(osv.osv): 'campaign_id': fields.related('activity_id', 'campaign_id', type='many2one', relation='marketing.campaign', string='Campaign', readonly=True), 'object_id': fields.related('activity_id', 'campaign_id', 'object_id', - type='many2one', relation='ir.model', string='Ressource', select=1, readonly=True), + type='many2one', relation='ir.model', string='Resource', select=1, readonly=True), 'res_id': fields.integer('Resource ID', select=1, readonly=True), - 'res_name': fields.function(_res_name_get, method=True, string='Resource Name', type="char", size=64), + 'res_name': fields.function(_res_name_get, method=True, string='Resource Name', fnct_search=_resource_search, type="char", size=64), 'date': fields.datetime('Execution Date', help='If date is not set, this workitem has to be run manually', readonly=True), 'partner_id': fields.many2one('res.partner', 'Partner', select=1, readonly=True), 'state': fields.selection([('todo', 'To Do'), diff --git a/addons/marketing_campaign/marketing_campaign_view.xml b/addons/marketing_campaign/marketing_campaign_view.xml index d21106c1722..0a677842d36 100644 --- a/addons/marketing_campaign/marketing_campaign_view.xml +++ b/addons/marketing_campaign/marketing_campaign_view.xml @@ -339,6 +339,7 @@ +