~unifield-team/unifield-addons/uf-2527-addons

« back to all changes in this revision

Viewing changes to hr_skill/hr_skill.py

  • Committer: pinky
  • Date: 2006-12-07 13:41:40 UTC
  • Revision ID: pinky-dedd7f8a42bd4557112a0513082691b8590ad6cc
New trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
##############################################################################
 
2
#
 
3
# Copyright (c) 2004 TINY SPRL. (http://tiny.be) All Rights Reserved.
 
4
#                    Fabien Pinckaers <fp@tiny.Be>
 
5
#
 
6
# WARNING: This program as such is intended to be used by professional
 
7
# programmers who take the whole responsability of assessing all potential
 
8
# consequences resulting from its eventual inadequacies and bugs
 
9
# End users who are looking for a ready-to-use solution with commercial
 
10
# garantees and support are strongly adviced to contract a Free Software
 
11
# Service Company
 
12
#
 
13
# This program is Free Software; you can redistribute it and/or
 
14
# modify it under the terms of the GNU General Public License
 
15
# as published by the Free Software Foundation; either version 2
 
16
# of the License, or (at your option) any later version.
 
17
#
 
18
# This program is distributed in the hope that it will be useful,
 
19
# but WITHOUT ANY WARRANTY; without even the implied warranty of
 
20
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 
21
# GNU General Public License for more details.
 
22
#
 
23
# You should have received a copy of the GNU General Public License
 
24
# along with this program; if not, write to the Free Software
 
25
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
26
#
 
27
##############################################################################
 
28
 
 
29
 
 
30
# ON peut choisir lors de la definititon
 
31
# d'un skill de lui associer des skills
 
32
# de substitution et d'y associer des poids
 
33
# (et donc plus d'arbre ..)
 
34
 
 
35
from osv import osv, fields
 
36
 
 
37
# Wheight Category
 
38
# eg: years, in english, ..
 
39
class hr_skill_weight_category(osv.osv):
 
40
        _name ='hr_skill.weight.category'
 
41
        _columns = {
 
42
                'name': fields.char('Name', size=64, required=True),
 
43
                }
 
44
 
 
45
hr_skill_weight_category()
 
46
 
 
47
 
 
48
# weight
 
49
# eg: 0 to 1, more than 5, good, bad
 
50
class hr_skill_weight(osv.osv):
 
51
        _name ='hr_skill.weight'
 
52
        _columns = {
 
53
                'name': fields.char('Name', size=64,required=True),
 
54
                'value': fields.float('Numerical value', required=True), 
 
55
                'category_id': fields.many2one('hr_skill.weight.category', 'Category', required=True, ondelete='cascade', relate=True), # relate -> click droit dispo
 
56
                }# hr_skill.category ne passe pas (cad creation des tables) la premiere fois (hr_skill_category bien)
 
57
 
 
58
hr_skill_weight()
 
59
 
 
60
 
 
61
# Skill
 
62
# eg : Spanish, OO programming (-> skill) 
 
63
#      Langage, IT (->view)       
 
64
# Categories of weight
 
65
class hr_skill_skill(osv.osv):
 
66
        _name = 'hr_skill.skill'
 
67
        _columns = {
 
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),
 
75
        }
 
76
        _defaults = {
 
77
                'view': lambda self,cr,uid,context: 'view',
 
78
                'weight': lambda self,cr,uid,context: 0,
 
79
                'active': lambda self,cr,uid,context: 1
 
80
        }
 
81
hr_skill_skill()
 
82
 
 
83
 
 
84
 
 
85
# Experience category
 
86
# eg : a degree or a professional experience
 
87
class hr_skill_experience_category(osv.osv):
 
88
        _name ='hr_skill.experience.category'
 
89
        _columns = {
 
90
                'name': fields.char('Name', size=64,required=True),
 
91
        }
 
92
hr_skill_experience_category()
 
93
 
 
94
 
 
95
# Experience
 
96
# eg : a specific former job position or studies  
 
97
# each experience is associated with several couple skill - weight 
 
98
class hr_skill_experience(osv.osv):
 
99
        _name ='hr_skill.experience'
 
100
        _columns = {
 
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'),
 
105
        }
 
106
hr_skill_experience()
 
107
 
 
108
 
 
109
# Evaluation Category
 
110
class hr_skill_evaluation_category(osv.osv):
 
111
        _name ='hr_skill.evaluation.category'
 
112
        _columns = {
 
113
                'name': fields.char('Name', size=64,required=True),
 
114
        }
 
115
hr_skill_evaluation_category()
 
116
 
 
117
# Evaluation
 
118
class hr_skill_evaluation(osv.osv):
 
119
        _name ='hr_skill.evaluation'
 
120
        _columns = {
 
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'),
 
131
 
 
132
        }
 
133
        def onchange_employee_id(self, cr, uid, ids, employee_id):
 
134
                if not employee_id:
 
135
                        return {}
 
136
                empl = self.pool.get('hr.employee').browse(cr, uid, employee_id)
 
137
                return {'value': {'interviewee_name':empl.name} }
 
138
        
 
139
hr_skill_evaluation()
 
140
 
 
141
# Profile
 
142
# eg : management, web-dev.
 
143
# each profile is associated with several couple skill - weight
 
144
class hr_skill_profile(osv.osv):
 
145
        _name ='hr_skill.profile'
 
146
        _columns = {
 
147
                'name': fields.char('Name', size=64, required=True),
 
148
                'skill_ids': fields.one2many('hr_skill.profile.skill','profile_id','Skills'),
 
149
        }
 
150
hr_skill_profile()
 
151
 
 
152
 
 
153
# Position
 
154
# eg : Senior web-dev, junior logistician
 
155
# a position is associated to one (or several) profile
 
156
class hr_skill_position(osv.osv):
 
157
        _name ='hr_skill.position'
 
158
        _columns = {
 
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'),
 
163
        }
 
164
hr_skill_position()
 
165
 
 
166
 
 
167
 
 
168
# definitition des relations :
 
169
class hr_skill_position_profile(osv.osv):
 
170
        _name ='hr_skill.position.profile'
 
171
        _columns = {
 
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) ,
 
176
        }
 
177
        def onchange_profile_id(self, cr, uid, ids, profile_id):
 
178
                if not profile_id:
 
179
                        return {}
 
180
                prof = self.pool.get('hr_skill.profile').browse(cr, uid, profile_id)
 
181
                return {'value': {'name':prof.name} }
 
182
hr_skill_position_profile()
 
183
 
 
184
 
 
185
class hr_skill_experience_skill(osv.osv):
 
186
        _name ='hr_skill.experience.skill'
 
187
        _columns = {
 
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) ,
 
192
        }
 
193
        def onchange_skill_id(self, cr, uid, ids, skill_id):
 
194
                if not skill_id:
 
195
                        return {}
 
196
                sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
 
197
                return {'value': {'name':sk.name} }
 
198
        
 
199
hr_skill_experience_skill()
 
200
 
 
201
 
 
202
 
 
203
class hr_skill_profile_skill(osv.osv):
 
204
        _name ='hr_skill.profile.skill'
 
205
        _columns = {
 
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')]),
 
210
        }
 
211
        
 
212
        def onchange_skill_id(self, cr, uid, ids, skill_id):
 
213
                if not skill_id:
 
214
                        return {}
 
215
                sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
 
216
                return {'value': {'name':sk.name} }
 
217
        
 
218
hr_skill_profile_skill()
 
219
 
 
220
 
 
221
 
 
222
class hr_skill_position_profile(osv.osv):
 
223
        _name ='hr_skill.position.profile'
 
224
        _columns = {
 
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),
 
229
        }
 
230
hr_skill_profile_skill()
 
231
 
 
232
 
 
233
 
 
234
class hr_skill_evaluation_experience(osv.osv):
 
235
        _name ='hr_skill.evaluation.experience'
 
236
        _columns = {
 
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),
 
241
        }
 
242
        
 
243
        def onchange_experience_id(self, cr, uid, ids, experience_id): 
 
244
                if not experience_id:
 
245
                        return {}
 
246
                exp = self.pool.get('hr_skill.experience').browse(cr, uid, experience_id)
 
247
                return {'value': {'name':exp.name} }
 
248
 
 
249
hr_skill_evaluation_experience()
 
250
 
 
251
 
 
252
 
 
253
class hr_skill_evaluation_skill(osv.osv):
 
254
        _name ='hr_skill.evaluation.skill'
 
255
        _columns = {
 
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),
 
260
        }
 
261
        def onchange_skill_id(self, cr, uid, ids, skill_id): 
 
262
                if not skill_id:
 
263
                        return {}
 
264
                sk = self.pool.get('hr_skill.skill').browse(cr, uid, skill_id)
 
265
                return {'value': {'name':sk.name} }
 
266
 
 
267
hr_skill_evaluation_skill()
 
268