Search code examples
odootypeerrorodoo-8

Openerp TypeError: write() got multiple values for keyword argument 'context'


I have this code. while clicking save button I get this error. Please help to resolve this issue.

TypeError: write() got multiple values for keyword argument 'context'

class crm_case_stage(osv.osv):
    _inherit="crm.case.stage"

    _columns = {
                 'name':fields.char('Stage Name'),
                 'email_template_ids':fields.many2many('email.template','email_tempate_rel','template_id'), #Integrate email templates with stage ids
                 'template_count' : fields.integer('Mail Template Count'),
                }

    def write(self, cr, uid, ids, context=None):
        cur_obj=self.browse(cr, uid, ids, context=context)
        self.write(cr, uid, ids,{'template_count':len(cur_obj.email_template_ids.ids)},context=context)

Solution

  • If you're using Odoo V8+ try to use the new API:

    @api.multi
    def write(self, vals):
        res = super(crm_case_stage, self).write(vals)
        for stage in self:
            stage.template_count = len(stage.email_template_ids)
        return res
    

    Or in old API:

    def write(self, cr, uid, ids, vals, context=None):
        res = True
        for stage in self.browse(cr, uid, ids, context):
            vals['template_count'] = len(stage.email_template_ids)
            res &= super(crm_case_stage, self).write(cr, uid, ids, vals, context)
        return res