63
64
# Langage, IT (->view)
64
65
# Categories of weight
65
66
class hr_skill_skill(osv.osv):
66
_name = 'hr_skill.skill'
68
'name': fields.char('Name', size=64,required=True),
69
'active': fields.boolean('Active'),
70
'weight': fields.float('Weight', required=True),
71
'weight_category_id': fields.many2one('hr_skill.weight.category','Weight Category'),
72
'parent_id': fields.many2one('hr_skill.skill', 'Parent', ondelete='cascade'),
73
'child_ids': fields.one2many('hr_skill.skill', 'parent_id', 'Childs'),
74
'view': fields.selection([('view','View'), ('skill','Skill')], 'Skill', required=True),
77
'view': lambda self,cr,uid,context: 'view',
78
'weight': lambda self,cr,uid,context: 0,
79
'active': lambda self,cr,uid,context: 1
67
_name = 'hr_skill.skill'
69
'name': fields.char('Name', size=64,required=True),
70
'active': fields.boolean('Active'),
71
'weight': fields.float('Weight', required=True),
72
'weight_category_id': fields.many2one('hr_skill.weight.category','Weight Category'),
73
'parent_id': fields.many2one('hr_skill.skill', 'Parent', ondelete='cascade'),
74
'child_ids': fields.one2many('hr_skill.skill', 'parent_id', 'Childs'),
75
'view': fields.selection([('view','View'), ('skill','Skill')], 'Skill', required=True),
78
'view': lambda self,cr,uid,context: 'view',
79
'weight': lambda self,cr,uid,context: 0,
80
'active': lambda self,cr,uid,context: 1
96
97
# eg : a specific former job position or studies
97
98
# each experience is associated with several couple skill - weight
98
99
class hr_skill_experience(osv.osv):
99
_name ='hr_skill.experience'
101
'name': fields.char('Name', size=64,required=True),
102
'skill_ids': fields.one2many('hr_skill.experience.skill','experience_id','Skills'),
103
'sequence': fields.integer('Sequence'),
104
'category_id' : fields.many2one('hr_skill.experience.category', 'Category'),
100
_name ='hr_skill.experience'
102
'name': fields.char('Name', size=64,required=True),
103
'skill_ids': fields.one2many('hr_skill.experience.skill','experience_id','Skills'),
104
'sequence': fields.integer('Sequence'),
105
'category_id' : fields.many2one('hr_skill.experience.category', 'Category'),
106
107
hr_skill_experience()
109
110
# Evaluation Category
110
111
class hr_skill_evaluation_category(osv.osv):
111
_name ='hr_skill.evaluation.category'
113
'name': fields.char('Name', size=64,required=True),
112
_name ='hr_skill.evaluation.category'
114
'name': fields.char('Name', size=64,required=True),
115
116
hr_skill_evaluation_category()
118
119
class hr_skill_evaluation(osv.osv):
119
_name ='hr_skill.evaluation'
121
'name': fields.char('Evaluation name', size=64,required=True),
122
'date': fields.date('Date',required=True),
123
'interviewer_name': fields.char('Evaluator', size=64,required=True),
124
'interviewee_name': fields.char('Evaluated People', size=64,required=True),
125
'employee_id': fields.many2one('hr.employee', 'Evaluated Employee'),
126
'note': fields.text('Notes'),
127
'reference': fields.char('Reference', size=64),
128
'category_id': fields.many2one('hr_skill.evaluation.category', 'Category', change_default=True),
129
'experience_ids': fields.one2many('hr_skill.evaluation.experience','evaluation_id','Experience'),
130
'skill_ids': fields.one2many('hr_skill.evaluation.skill','evaluation_id','Skill'),
120
_name ='hr_skill.evaluation'
122
'name': fields.char('Evaluation name', size=64,required=True),
123
'date': fields.date('Date',required=True),
124
'interviewer_name': fields.char('Evaluator', size=64,required=True),
125
'interviewee_name': fields.char('Evaluated People', size=64,required=True),
126
'employee_id': fields.many2one('hr.employee', 'Evaluated Employee'),
127
'note': fields.text('Notes'),
128
'reference': fields.char('Reference', size=64),
129
'category_id': fields.many2one('hr_skill.evaluation.category', 'Category', change_default=True),
130
'experience_ids': fields.one2many('hr_skill.evaluation.experience','evaluation_id','Experience'),
131
'skill_ids': fields.one2many('hr_skill.evaluation.skill','evaluation_id','Skill'),
133
def onchange_employee_id(self, cr, uid, ids, employee_id):
136
empl = self.pool.get('hr.employee').browse(cr, uid, employee_id)
137
return {'value': {'interviewee_name':empl.name} }
134
def onchange_employee_id(self, cr, uid, ids, employee_id):
137
empl = self.pool.get('hr.employee').browse(cr, uid, employee_id)
138
return {'value': {'interviewee_name':empl.name} }
139
140
hr_skill_evaluation()
142
143
# eg : management, web-dev.
143
144
# each profile is associated with several couple skill - weight
144
145
class hr_skill_profile(osv.osv):
145
_name ='hr_skill.profile'
147
'name': fields.char('Name', size=64, required=True),
148
'skill_ids': fields.one2many('hr_skill.profile.skill','profile_id','Skills'),
146
_name ='hr_skill.profile'
148
'name': fields.char('Name', size=64, required=True),
149
'skill_ids': fields.one2many('hr_skill.profile.skill','profile_id','Skills'),
150
151
hr_skill_profile()
154
155
# eg : Senior web-dev, junior logistician
155
156
# a position is associated to one (or several) profile
156
157
class hr_skill_position(osv.osv):
157
_name ='hr_skill.position'
159
'name': fields.char('Name', size=64, required=True),
160
'employee_id': fields.many2one('hr.employee', 'Assigned Employee'),# ?? pq un many2one ?
161
'profile_ids': fields.one2many('hr_skill.position.profile', 'position_id', 'Profiles'),
162
'status': fields.selection([('open','Open'), ('assigned','Assigned'), ('unused','Unused')], 'Status'),
158
_name ='hr_skill.position'
160
'name': fields.char('Name', size=64, required=True),
161
'employee_id': fields.many2one('hr.employee', 'Assigned Employee'),# ?? pq un many2one ?
162
'profile_ids': fields.one2many('hr_skill.position.profile', 'position_id', 'Profiles'),
163
'status': fields.selection([('open','Open'), ('assigned','Assigned'), ('unused','Unused')], 'Status'),
164
165
hr_skill_position()
168
169
# definitition des relations :
169
170
class hr_skill_position_profile(osv.osv):
170
_name ='hr_skill.position.profile'
172
'name': fields.char('Name', size=64),
173
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
174
'position_id': fields.many2one('hr_skill.position','Position', ondelete='cascade',required=True),
175
'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True) ,
177
def onchange_profile_id(self, cr, uid, ids, profile_id):
180
prof = self.pool.get('hr_skill.profile').browse(cr, uid, profile_id)
181
return {'value': {'name':prof.name} }
171
_name ='hr_skill.position.profile'
173
'name': fields.char('Name', size=64),
174
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
175
'position_id': fields.many2one('hr_skill.position','Position', ondelete='cascade',required=True),
176
'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True) ,
178
def onchange_profile_id(self, cr, uid, ids, profile_id):
181
prof = self.pool.get('hr_skill.profile').browse(cr, uid, profile_id)
182
return {'value': {'name':prof.name} }
182
183
hr_skill_position_profile()
185
186
class hr_skill_experience_skill(osv.osv):
186
_name ='hr_skill.experience.skill'
188
'name': fields.char('Name', size=64, required=True),
189
'weight_id': fields.many2one('hr_skill.weight','Weight', required=True),
190
'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade',required=True),
191
'experience_id': fields.many2one('hr_skill.experience','Experience', ondelete='cascade',required=True) ,
193
def onchange_skill_id(self, cr, uid, ids, skill_id):
196
sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
197
return {'value': {'name':sk.name} }
187
_name ='hr_skill.experience.skill'
189
'name': fields.char('Name', size=64, required=True),
190
'weight_id': fields.many2one('hr_skill.weight','Weight', required=True),
191
'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade',required=True),
192
'experience_id': fields.many2one('hr_skill.experience','Experience', ondelete='cascade',required=True) ,
194
def onchange_skill_id(self, cr, uid, ids, skill_id):
197
sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
198
return {'value': {'name':sk.name} }
199
200
hr_skill_experience_skill()
203
204
class hr_skill_profile_skill(osv.osv):
204
_name ='hr_skill.profile.skill'
206
'name': fields.char('Name', size=64),
207
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
208
'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True),
209
'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade',required=True, domain=[('view','<>','view')]),
212
def onchange_skill_id(self, cr, uid, ids, skill_id):
215
sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
216
return {'value': {'name':sk.name} }
205
_name ='hr_skill.profile.skill'
207
'name': fields.char('Name', size=64),
208
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
209
'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True),
210
'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade',required=True, domain=[('view','<>','view')]),
213
def onchange_skill_id(self, cr, uid, ids, skill_id):
216
sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
217
return {'value': {'name':sk.name} }
218
219
hr_skill_profile_skill()
222
223
class hr_skill_position_profile(osv.osv):
223
_name ='hr_skill.position.profile'
225
'name': fields.char('Name', size=64),
226
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True, ondelete='cascade'),
227
'position_id': fields.many2one('hr_skill.position','Position', ondelete='cascade',required=True),
228
'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True),
224
_name ='hr_skill.position.profile'
226
'name': fields.char('Name', size=64),
227
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True, ondelete='cascade'),
228
'position_id': fields.many2one('hr_skill.position','Position', ondelete='cascade',required=True),
229
'profile_id': fields.many2one('hr_skill.profile','Profile', ondelete='cascade',required=True),
230
231
hr_skill_profile_skill()
234
235
class hr_skill_evaluation_experience(osv.osv):
235
_name ='hr_skill.evaluation.experience'
237
'name': fields.char('Name', size=64,required=True),
238
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
239
'evaluation_id': fields.many2one('hr_skill.evaluation','Evaluation', ondelete='cascade', required=True),
240
'experience_id': fields.many2one('hr_skill.experience','Experience', ondelete='cascade', required=True),
243
def onchange_experience_id(self, cr, uid, ids, experience_id):
244
if not experience_id:
246
exp = self.pool.get('hr_skill.experience').browse(cr, uid, experience_id)
247
return {'value': {'name':exp.name} }
236
_name ='hr_skill.evaluation.experience'
238
'name': fields.char('Name', size=64,required=True),
239
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
240
'evaluation_id': fields.many2one('hr_skill.evaluation','Evaluation', ondelete='cascade', required=True),
241
'experience_id': fields.many2one('hr_skill.experience','Experience', ondelete='cascade', required=True),
244
def onchange_experience_id(self, cr, uid, ids, experience_id):
245
if not experience_id:
247
exp = self.pool.get('hr_skill.experience').browse(cr, uid, experience_id)
248
return {'value': {'name':exp.name} }
249
250
hr_skill_evaluation_experience()
253
254
class hr_skill_evaluation_skill(osv.osv):
254
_name ='hr_skill.evaluation.skill'
256
'name': fields.char('Name', size=64),
257
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
258
'evaluation_id': fields.many2one('hr_skill.evaluation','Evaluation', ondelete='cascade', required=True),
259
'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade', required=True),
261
def onchange_skill_id(self, cr, uid, ids, skill_id):
264
sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
265
return {'value': {'name':sk.name} }
255
_name ='hr_skill.evaluation.skill'
257
'name': fields.char('Name', size=64),
258
'weight_id': fields.many2one('hr_skill.weight','Weight',required=True),
259
'evaluation_id': fields.many2one('hr_skill.evaluation','Evaluation', ondelete='cascade', required=True),
260
'skill_id': fields.many2one('hr_skill.skill','Skill', ondelete='cascade', required=True),
262
def onchange_skill_id(self, cr, uid, ids, skill_id):
265
sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
266
return {'value': {'name':sk.name} }
267
268
hr_skill_evaluation_skill()
270
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: