From 691d305ed9a35b771b2073479666a577ce9784ca Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 7 Feb 2014 10:24:11 +0100 Subject: [PATCH 1/6] [FIX] gamification: automatically generates goals for users when adding them to a new challenge bzr revid: mat@openerp.com-20140207092411-yju3pif1ibipcff8 --- addons/gamification/models/challenge.py | 6 ++++-- addons/gamification/models/res_users.py | 3 +++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index ae27aa96719..ce940df1fa5 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -387,6 +387,7 @@ class gamification_challenge(osv.Model): end_date = challenge.end_date for line in challenge.line_ids: + # FIXME: allow to restrict to a subset of users for user in challenge.user_ids: goal_obj = self.pool.get('gamification.goal') @@ -400,8 +401,9 @@ class gamification_challenge(osv.Model): # resume canceled goals domain.append(('state', '=', 'canceled')) canceled_goal_ids = goal_obj.search(cr, uid, domain, context=context) - goal_obj.write(cr, uid, canceled_goal_ids, {'state': 'inprogress'}, context=context) - goal_obj.update(cr, uid, canceled_goal_ids, context=context) + if canceled_goal_ids: + goal_obj.write(cr, uid, canceled_goal_ids, {'state': 'inprogress'}, context=context) + goal_obj.update(cr, uid, canceled_goal_ids, context=context) # skip to next user continue diff --git a/addons/gamification/models/res_users.py b/addons/gamification/models/res_users.py index 408ddddf082..b58a65a877d 100644 --- a/addons/gamification/models/res_users.py +++ b/addons/gamification/models/res_users.py @@ -42,6 +42,7 @@ class res_users_gamification_group(osv.Model): challenge_ids = challenge_obj.search(cr, uid, [('autojoin_group_id', 'in', user_group_ids)], context=context) if challenge_ids: challenge_obj.write(cr, uid, challenge_ids, {'user_ids': [(4, user_id) for user_id in ids]}, context=context) + challenge_obj.generate_goals_from_challenge(cr, uid, challenge_ids, context=context) return write_res def create(self, cr, uid, vals, context=None): @@ -56,6 +57,7 @@ class res_users_gamification_group(osv.Model): challenge_ids = challenge_obj.search(cr, uid, [('autojoin_group_id', 'in', user_group_ids)], context=context) if challenge_ids: challenge_obj.write(cr, uid, challenge_ids, {'user_ids': [(4, write_res)]}, context=context) + challenge_obj.generate_goals_from_challenge(cr, uid, challenge_ids, context=context) return write_res # def get_goals_todo_info(self, cr, uid, context=None): @@ -129,4 +131,5 @@ class res_groups_gamification_group(osv.Model): challenge_ids = challenge_obj.search(cr, uid, [('autojoin_group_id', 'in', ids)], context=context) if challenge_ids: challenge_obj.write(cr, uid, challenge_ids, {'user_ids': [(4, user_id) for user_id in user_ids]}, context=context) + challenge_obj.generate_goals_from_challenge(cr, uid, challenge_ids, context=context) return write_res From f988e74828e29466439a9eb8d43eeadd5dd7328c Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 7 Feb 2014 10:36:43 +0100 Subject: [PATCH 2/6] [FIX] gamification: when serialising data, skip lines and challenges with no goals bzr revid: mat@openerp.com-20140207093643-vr1on5oxqtzkalj9 --- addons/gamification/models/challenge.py | 10 ++-------- addons/gamification/models/res_users.py | 16 +++++++++------- 2 files changed, 11 insertions(+), 15 deletions(-) diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index ce940df1fa5..fec8e04c4b7 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -518,13 +518,6 @@ class gamification_challenge(osv.Model): domain.append(('user_id', '=', user_id)) sorting = goal_obj._order limit = 1 - # initialise in case search returns no results - line_data.update({ - 'id': 0, - 'current': 0, - 'completeness': 0, - 'state': 'draft', - }) else: line_data.update({ 'own_goal_id': False, @@ -561,7 +554,8 @@ class gamification_challenge(osv.Model): 'completeness': goal.completeness, 'state': goal.state, }) - res_lines.append(line_data) + if goal_ids: + res_lines.append(line_data) return res_lines ##### Reporting ##### diff --git a/addons/gamification/models/res_users.py b/addons/gamification/models/res_users.py index b58a65a877d..d25d725a4ac 100644 --- a/addons/gamification/models/res_users.py +++ b/addons/gamification/models/res_users.py @@ -85,13 +85,15 @@ class res_users_gamification_group(osv.Model): challenge_ids = challenge_obj.search(cr, uid, [('user_ids', 'in', uid), ('state', '=', 'inprogress')], context=context) for challenge in challenge_obj.browse(cr, uid, challenge_ids, context=context): # serialize goals info to be able to use it in javascript - all_goals_info.append({ - 'id': challenge.id, - 'name': challenge.name, - 'visibility_mode': challenge.visibility_mode, - 'currency': user.company_id.currency_id.id, - 'lines': challenge_obj._get_serialized_challenge_lines(cr, uid, challenge, user_id, restrict_top=MAX_VISIBILITY_RANKING, context=context), - }) + lines = challenge_obj._get_serialized_challenge_lines(cr, uid, challenge, user_id, restrict_top=MAX_VISIBILITY_RANKING, context=context) + if lines: + all_goals_info.append({ + 'id': challenge.id, + 'name': challenge.name, + 'visibility_mode': challenge.visibility_mode, + 'currency': user.company_id.currency_id.id, + 'lines': lines, + }) return all_goals_info From 344452e73a3918126a83ab4d3ad393e941ad8c73 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 7 Feb 2014 11:20:29 +0100 Subject: [PATCH 3/6] [FIX] hr_gamification: add auto_install to attribute, when get gamification and hr, automatically installed bzr revid: mat@openerp.com-20140207102029-6y45r4cmrc1h8kx7 --- addons/hr_gamification/__openerp__.py | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/hr_gamification/__openerp__.py b/addons/hr_gamification/__openerp__.py index c75a4454437..14925421cb1 100644 --- a/addons/hr_gamification/__openerp__.py +++ b/addons/hr_gamification/__openerp__.py @@ -37,4 +37,5 @@ Badge received are displayed on the user profile. 'views/gamification.xml', ], 'js': ['static/src/js/gamification.js'], + 'auto_install': True, } From 838fe32a983c03b3c08f4addb9b5d506174f7d76 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 7 Feb 2014 11:27:05 +0100 Subject: [PATCH 4/6] [IMP] gamification: related field challenge_id is always readonly, add helper bzr revid: mat@openerp.com-20140207102705-cf5aue57qzo03rlq --- addons/gamification/models/goal.py | 3 ++- addons/gamification/views/goal.xml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/addons/gamification/models/goal.py b/addons/gamification/models/goal.py index 8792e219d71..8e79c43c8a6 100644 --- a/addons/gamification/models/goal.py +++ b/addons/gamification/models/goal.py @@ -163,7 +163,8 @@ class gamification_goal(osv.Model): string="Challenge", type='many2one', relation='gamification.challenge', - store=True), + store=True, readonly=True, + help="Challenge that generated the goal, assign challenge to users to generate goals with a value in this field."), 'start_date': fields.date('Start Date'), 'end_date': fields.date('End Date'), # no start and end = always active 'target_goal': fields.float('To Reach', diff --git a/addons/gamification/views/goal.xml b/addons/gamification/views/goal.xml index a269f710c02..b8da6bf16bf 100644 --- a/addons/gamification/views/goal.xml +++ b/addons/gamification/views/goal.xml @@ -55,7 +55,7 @@ - + From b8b6a3651a50c972f497eb0d625ee27c397c4c58 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 7 Feb 2014 11:33:57 +0100 Subject: [PATCH 5/6] [FIX] gamification: convert missed type to definition filter (goal history menu will group by user and definition) bzr revid: mat@openerp.com-20140207103357-7v8seoqgq9rokhhi --- addons/hr_gamification/views/gamification.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/hr_gamification/views/gamification.xml b/addons/hr_gamification/views/gamification.xml index e2d45948b95..60c758a717d 100644 --- a/addons/hr_gamification/views/gamification.xml +++ b/addons/hr_gamification/views/gamification.xml @@ -50,7 +50,7 @@ form Goals History tree,kanban - {'search_default_group_by_user': True, 'search_default_group_by_type': True} + {'search_default_group_by_user': True, 'search_default_group_by_definition': True} [('challenge_id.category', '=', 'hr')]

From 8e97edb976f3b07a03d82d3ac8ee0a6b32f74fbe Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 7 Feb 2014 11:55:29 +0100 Subject: [PATCH 6/6] [IMP] gamification: put challenge list above goals to be more user friendly bzr revid: mat@openerp.com-20140207105529-4a95snjwpc11he6k --- addons/gamification/views/goal.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addons/gamification/views/goal.xml b/addons/gamification/views/goal.xml index b8da6bf16bf..1c408e3ab11 100644 --- a/addons/gamification/views/goal.xml +++ b/addons/gamification/views/goal.xml @@ -280,8 +280,8 @@ - - + +