Community mailing list archives

community@mail.odoo.com

Modify ORM create method behavior using inheritance [Old API]

by
Yassine TEIMI
- 11/24/2015 14:59:50
Dears, 

I want to change the following create method behavior (The code part I want to change is in bold)  : 

class hr_evaluation_interview(osv.Model): 
_name = 'hr.evaluation.interview'
_inherit = 'mail.thread'
_rec_name = 'user_to_review_id'
_description = 'Appraisal Interview'

def create(self, cr, uid, vals, context=None):
phase_obj = self.pool.get('hr_evaluation.plan.phase')         survey_id = phase_obj.read(cr, uid, vals.get('phase_id'), fields=['survey_id'], context=context)['survey_id'][0]         if vals.get('user_id'):             user_obj = self.pool.get('res.users')             partner_id = user_obj.read(cr, uid, vals.get('user_id'), fields=['partner_id'], context=context)['partner_id'][0]
else:             partner_id = None         user_input_obj = self.pool.get('survey.user_input')         if not vals.get('deadline'):             vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)         ret = user_input_obj.create(cr, uid, {'survey_id': survey_id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id}, context=context)         vals['request_id'] = ret
return super(hr_evaluation_interview, self).create(cr, uid, vals, context=context)
It's the hr_evaluation_interview create method, I want when the interview request is created, the partner_id field receive a different value than it receives now. 

The partner_id receives the user_id (user related to the hr evaluator), I want it to be the evaluated employee (interviewd_id).

So I did the following using inheritance (changed code is in bold) : 

class HrEvaluationInterview(osv.Model): 
    _inherit = 'hr.evaluation.interview'

_columns = {
'interviewd_id': fields.many2one('hr.employee','Employee evaluated'),
}

def create(self, cr, uid, vals, context=None):
phase_obj = self.pool.get('hr_evaluation.plan.phase')
survey_id = phase_obj.read(cr, uid, vals.get('phase_id'), fields=['survey_id'], context=context)['survey_id'][0]
employee_obj = self.pool.get('hr.employee')
us_id = employee_obj.read(cr, uid, vals.get('interviewd_id'), fields=['user_id'], context=context)['user_id'][0] if vals.get('user_id'):
user_obj = self.pool.get('res.users')
partner_id = user_obj.read(cr, uid, us_id, fields=['partner_id'], context=context)['partner_id'][0]

else:
partner_id = None

        user_input_obj = self.pool.get('survey.user_input') if not vals.get('deadline'):
vals['deadline'] = (datetime.now() + timedelta(days=28)).strftime(DF)         ret = user_input_obj.create(cr, uid, {'survey_id': survey_id,
'deadline': vals.get('deadline'),
'type': 'link',
'partner_id': partner_id}, context=context)
vals['request_id'] = ret         return super(HrEvaluationInterview, self).create(cr, uid, vals, context=context)
The problem is that the behavior didn't change, it keeps doing the same things did by the parent method. Maybe it's because the return I'm doing, can you advise me something ? 

Thanks a lot.
--

Cordialement

Yassine TEIMI

Consultant & Odoo Project Manager
TEL : +212 6-87 71 41 18