Openerp get partner category tags

315 Views Asked by At

I have 2 fields in my custom module:

'originator_id' : fields.many2one("res.partner",string="Originator", required=True),
'originator_category_ids' : fields.many2many('res.partner.category',
                                             'module_category_rel',
                                             'module_id',
                                             'category_id',
                                             'Categories'),

I want to set the domain for the many2many field "originator_category_ids" according to the selected "originator_id" which is a partner_id. I wrote an onchange method to define the domain dynamically:

def get_domain_originator_category_ids(self,cr,uid,ids,originator_id,context=None):
    if originator_id:
        obj = self.pool.get('res.partner').browse(cr, uid, originator_id)
    return {'domain':{'originator_category_ids':[('id','in',obj.category_id)]}}

But above doesn't work.

Your support will be much appreciated.

1

There are 1 best solutions below

0
On

This is worked for me, but it is a temporary solution until I find a better one. The solution consist on looping on categories and compare with the selected partner in the partner_ids field:

def get_domain_originator_category_ids(self,cr,uid,ids,originator_id,context=None):

    category_obj = self.pool.get('res.partner.category')
    category_ids = category_obj.search(cr, uid,[], context=context)
    res=[]
    for cateory in category_obj.browse(cr, uid, category_ids, context=context):
        for partner_id in cateory.partner_ids:
            if partner_id.id == originator_id:
                res.append(cateory.id)

    return {'domain':{'originator_category_ids':[('id','in',res)]}}

If you get a better solution please post it.