diff --git a/addons/gamification/goal.py b/addons/gamification/goal.py index a020e98e6e5..e695322e9a0 100644 --- a/addons/gamification/goal.py +++ b/addons/gamification/goal.py @@ -343,6 +343,19 @@ class gamification_goal(osv.Model): return False + def changed_users_avatar(self, cr, uid, ids, context): + """Warning a user changed his avatar. + + The goal_type type_base_avatar requires a change of avatar. As an + avatar is randomly generated by default, trigger warning when change. + Set the state of every type_base_avatar linked to ids to 'reached' and + set current value to 1. + """ + goal_type_id = self.pool['ir.model.data'].get_object(cr, uid, 'gamification', 'type_base_avatar', context) + goal_ids = self.search(cr, uid, [('type_id', '=', goal_type_id.id), ('user_id', 'in', ids)], context=context) + values = {'state': 'reached', 'current': 1} + self.write(cr, uid, goal_ids, values, context=context) + class goal_manual_wizard(osv.TransientModel): """Wizard type to update a manual goal""" diff --git a/addons/gamification/goal_base_data.xml b/addons/gamification/goal_base_data.xml index ded06f45dec..5c8158f5523 100644 --- a/addons/gamification/goal_base_data.xml +++ b/addons/gamification/goal_base_data.xml @@ -19,12 +19,12 @@ Change of avatar In your user perference manually + base.action_res_users_my diff --git a/addons/gamification/plan.py b/addons/gamification/plan.py index 9bd658703ed..53230c5cd87 100644 --- a/addons/gamification/plan.py +++ b/addons/gamification/plan.py @@ -128,8 +128,8 @@ class gamification_goal_plan(osv.Model): string='State', required=True), 'visibility_mode': fields.selection([ - ('board','Leader board'), - ('progressbar','Personal progressbar') + ('board', 'Leader board'), + ('progressbar', 'Personal progressbar') ], string="Visibility", help='How are displayed the results, shared or in a single progressbar', diff --git a/addons/gamification/res_users.py b/addons/gamification/res_users.py index c8fa6c409be..af887319f74 100644 --- a/addons/gamification/res_users.py +++ b/addons/gamification/res_users.py @@ -20,6 +20,9 @@ class res_users_gamification_group(osv.Model): plan_ids = goal_plan_obj.search(cr, uid, [('autojoin_group_id', 'in', user_group_ids)], context=context) goal_plan_obj.plan_subscribe_users(cr, uid, plan_ids, ids, context=context) + + if vals.get('image'): + self.pool.get('gamification.goal').changed_users_avatar(cr, uid, ids, context) return write_res def get_goals_todo_info(self, cr, uid, context=None): diff --git a/addons/gamification/static/src/js/gamification.js b/addons/gamification/static/src/js/gamification.js index d415d35a890..7f49f66785f 100644 --- a/addons/gamification/static/src/js/gamification.js +++ b/addons/gamification/static/src/js/gamification.js @@ -39,7 +39,9 @@ openerp.gamification = function(instance) { }); $.when(goal_action).done(function() { var action_manager = new instance.web.ActionManager(this); - action_manager.do_action(goal_action.action); + action_manager.do_action(goal_action.action).done(function () { + self.get_goal_todo_info(); + }); //var form = action_manager.dialog_widget.views.form.controller; });