diff options
| author | Thibault Delavallée <tde@openerp.com> | 2014-01-06 14:57:00 +0100 |
|---|---|---|
| committer | Thibault Delavallée <tde@openerp.com> | 2014-01-06 14:57:00 +0100 |
| commit | 49c0b7a82003a889edc19cb189d0d6d0ebda2c5f (patch) | |
| tree | d24c9d3fe3baad3ba06f11d4bf334e2504fb6092 /addons/hr_gamification/models | |
| parent | c4c268c902a134efdf0f097053c9b28d6b14417c (diff) | |
| parent | ced63415b7319e12fb9d31a3e370850278f697c1 (diff) | |
[MERGE] Sync with trunk
bzr revid: tde@openerp.com-20140106135700-rt0g44w5xmpbtxiu
Diffstat (limited to 'addons/hr_gamification/models')
| -rw-r--r-- | addons/hr_gamification/models/__init__.py | 22 | ||||
| -rw-r--r-- | addons/hr_gamification/models/gamification.py | 113 |
2 files changed, 135 insertions, 0 deletions
diff --git a/addons/hr_gamification/models/__init__.py b/addons/hr_gamification/models/__init__.py new file mode 100644 index 00000000000..51cf01dfa09 --- /dev/null +++ b/addons/hr_gamification/models/__init__.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013 OpenERP SA (<http://openerp.com>). +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. +# +############################################################################## + +import gamification diff --git a/addons/hr_gamification/models/gamification.py b/addons/hr_gamification/models/gamification.py new file mode 100644 index 00000000000..b2aa9039cb1 --- /dev/null +++ b/addons/hr_gamification/models/gamification.py @@ -0,0 +1,113 @@ +# -*- coding: utf-8 -*- +############################################################################## +# +# OpenERP, Open Source Management Solution +# Copyright (C) 2013 OpenERP SA (<http://www.openerp.com>) +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/> +# +############################################################################## + +from openerp.osv import fields, osv + + +class hr_gamification_badge_user(osv.Model): + """User having received a badge""" + + _name = 'gamification.badge.user' + _inherit = ['gamification.badge.user'] + + _columns = { + 'employee_id': fields.many2one("hr.employee", string='Employee'), + } + + def _check_employee_related_user(self, cr, uid, ids, context=None): + for badge_user in self.browse(cr, uid, ids, context=context): + if badge_user.user_id and badge_user.employee_id: + if badge_user.employee_id not in badge_user.user_id.employee_ids: + return False + return True + + _constraints = [ + (_check_employee_related_user, "The selected employee does not correspond to the selected user.", ['employee_id']), + ] + + +class gamification_badge(osv.Model): + _name = 'gamification.badge' + _inherit = ['gamification.badge'] + + def get_granted_employees(self, cr, uid, badge_ids, context=None): + if context is None: + context = {} + + employee_ids = [] + badge_user_ids = self.pool.get('gamification.badge.user').search(cr, uid, [('badge_id', 'in', badge_ids), ('employee_id', '!=', False)], context=context) + for badge_user in self.pool.get('gamification.badge.user').browse(cr, uid, badge_user_ids, context): + employee_ids.append(badge_user.employee_id.id) + # remove duplicates + employee_ids = list(set(employee_ids)) + return { + 'type': 'ir.actions.act_window', + 'name': 'Granted Employees', + 'view_mode': 'kanban,tree,form', + 'view_type': 'form', + 'res_model': 'hr.employee', + 'domain': [('id', 'in', employee_ids)] + } + + +class hr_employee(osv.osv): + _name = "hr.employee" + _inherit = "hr.employee" + + def _get_employee_goals(self, cr, uid, ids, field_name, arg, context=None): + """Return the list of goals assigned to the employee""" + res = {} + for employee in self.browse(cr, uid, ids, context=context): + res[employee.id] = self.pool.get('gamification.goal').search(cr,uid,[('user_id', '=', employee.user_id.id), ('challenge_id.category', '=', 'hr')], context=context) + return res + + def _get_employee_badges(self, cr, uid, ids, field_name, arg, context=None): + """Return the list of badge_users assigned to the employee""" + res = {} + for employee in self.browse(cr, uid, ids, context=context): + res[employee.id] = self.pool.get('gamification.badge.user').search(cr, uid, [ + '|', + ('employee_id', '=', employee.id), + '&', + ('employee_id', '=', False), + ('user_id', '=', employee.user_id.id) + ], context=context) + return res + + def _has_badges(self, cr, uid, ids, field_name, arg, context=None): + """Return the list of badge_users assigned to the employee""" + res = {} + for employee in self.browse(cr, uid, ids, context=context): + employee_badge_ids = self.pool.get('gamification.badge.user').search(cr, uid, [ + '|', + ('employee_id', '=', employee.id), + '&', + ('employee_id', '=', False), + ('user_id', '=', employee.user_id.id) + ], context=context) + res[employee.id] = len(employee_badge_ids) > 0 + return res + + _columns = { + 'goal_ids': fields.function(_get_employee_goals, type="one2many", obj='gamification.goal', string="Employee HR Goals"), + 'badge_ids': fields.function(_get_employee_badges, type="one2many", obj='gamification.badge.user', string="Employee Badges"), + 'has_badges': fields.function(_has_badges, type="boolean", string="Has Badges"), + } |
