From 21022c5472ef08cda46cb32159aba7244fd128a1 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 11 Apr 2014 16:22:57 +0200 Subject: [PATCH] [REF] gamification: add batch mode, improve some views, remove inprogess_update state (replaced with boolean 'to update') bzr revid: mat@openerp.com-20140411142257-zpaul4sq3t5j5r64 --- addons/gamification/data/goal_base.xml | 2 - addons/gamification/models/badge.py | 5 +- addons/gamification/models/challenge.py | 25 ++- addons/gamification/models/goal.py | 169 ++++++++++++------ .../static/img/badge_hidden-image.png | Bin 12994 -> 63364 bytes .../static/src/js/gamification.js | 22 +-- addons/gamification/views/goal.xml | 22 ++- addons/gamification/wizard/update_goal.py | 1 + 8 files changed, 157 insertions(+), 89 deletions(-) diff --git a/addons/gamification/data/goal_base.xml b/addons/gamification/data/goal_base.xml index 66dd7be7431..428cc357047 100644 --- a/addons/gamification/data/goal_base.xml +++ b/addons/gamification/data/goal_base.xml @@ -13,8 +13,6 @@

You have not updated your progress for the goal ${object.definition_id.name} (currently reached at ${object.completeness}%) for at least ${object.remind_update_delay} days. Do not forget to do it.

- -

If you have not changed your score yet, you can use the button "The current value is up to date" to indicate so.

]]> diff --git a/addons/gamification/models/badge.py b/addons/gamification/models/badge.py index 1d879393ed2..eb97b55ab07 100644 --- a/addons/gamification/models/badge.py +++ b/addons/gamification/models/badge.py @@ -39,7 +39,8 @@ class gamification_badge_user(osv.Model): _columns = { 'user_id': fields.many2one('res.users', string="User", required=True), 'sender_id': fields.many2one('res.users', string="Sender", help="The user who has send the badge"), - 'badge_id': fields.many2one('gamification.badge', string='Badge', required=True), + 'badge_id': fields.many2one('gamification.badge', string='Badge', required=True, ondelete="cascade"), + 'challenge_id': fields.many2one('gamification.challenge', string='Challenge originating', help="If this badge was rewarded through a challenge"), 'comment': fields.text('Comment'), 'badge_name': fields.related('badge_id', 'name', type="char", string="Badge Name"), 'create_date': fields.datetime('Created', readonly=True), @@ -263,7 +264,7 @@ class gamification_badge(osv.Model): def check_progress(self, cr, uid, context=None): try: - model, res_id = template_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'gamification', 'badge_hidden') + model, res_id = self.pool.get('ir.model.data').get_object_reference(cr, uid, 'gamification', 'badge_hidden') except ValueError: return True badge_user_obj = self.pool.get('gamification.badge.user') diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index 06d0c44baac..b5f9369ef1b 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -163,6 +163,8 @@ class gamification_challenge(osv.Model): 'reward_second_id': fields.many2one('gamification.badge', string="For 2nd user"), 'reward_third_id': fields.many2one('gamification.badge', string="For 3rd user"), 'reward_failure': fields.boolean('Reward Bests if not Succeeded?'), + 'reward_realtime': fields.boolean('Reward as soon as every goal is reached', + help="With this option enabled, a user can receive a badge only once. The top 3 badges are still rewarded only at the end of the challenge."), 'visibility_mode': fields.selection([ ('personal', 'Individual Goals'), @@ -257,7 +259,7 @@ class gamification_challenge(osv.Model): elif vals.get('state') == 'draft': # resetting progress - if self.pool.get('gamification.goal').search(cr, uid, [('challenge_id', 'in', ids), ('state', 'in', ['inprogress', 'inprogress_update'])], context=context): + if self.pool.get('gamification.goal').search(cr, uid, [('challenge_id', 'in', ids), ('state', '=', 'inprogress')], context=context): raise osv.except_osv("Error", "You can not reset a challenge with unfinished goals.") write_res = super(gamification_challenge, self).write(cr, uid, ids, vals, context=context) @@ -280,13 +282,13 @@ class gamification_challenge(osv.Model): - Create the missing goals (eg: modified the challenge to add lines) - Update every running challenge """ - # start planned challenges + # start scheduled challenges planned_challenge_ids = self.search(cr, uid, [ ('state', '=', 'draft'), ('start_date', '<=', fields.date.today())]) self.write(cr, uid, planned_challenge_ids, {'state': 'inprogress'}, context=context) - # close planned challenges + # close scheduled challenges planned_challenge_ids = self.search(cr, uid, [ ('state', '=', 'inprogress'), ('end_date', '>=', fields.date.today())]) @@ -312,7 +314,7 @@ class gamification_challenge(osv.Model): goal_ids = goal_obj.search(cr, uid, [ ('challenge_id', 'in', ids), '|', - ('state', 'in', ('inprogress', 'inprogress_update')), + ('state', '=', 'inprogress'), '&', ('state', 'in', ('reached', 'failed')), '|', @@ -328,6 +330,8 @@ class gamification_challenge(osv.Model): self.write(cr, uid, [challenge.id], {'user_ids': [(4, user.id) for user in challenge.autojoin_group_id.users]}, context=context) self.generate_goals_from_challenge(cr, uid, [challenge.id], context=context) + # goal_group = goal_obj.read_group(cr, uid, [('challenge_id', '=', challenge.id), ('closed', '=', False)], fields=['id', 'line_id', 'target_goal'], groupby=['line_id'], context=context) + # goals closed but still opened at the last report date closed_goals_to_report = goal_obj.search(cr, uid, [ ('challenge_id', '=', challenge.id), @@ -349,6 +353,7 @@ class gamification_challenge(osv.Model): """Update all the goals of a challenge, no generation of new goals""" goal_ids = self.pool.get('gamification.goal').search(cr, uid, [('challenge_id', '=', challenge_id)], context=context) self.pool.get('gamification.goal').update(cr, uid, goal_ids, context=context) + print self.pool.get('gamification.goal').read_group(cr, uid, [('challenge_id', '=', challenge_id), ('closed', '=', False)], fields=['id', 'line_id', 'target_goal'], groupby=['line_id'], context=context) return True @@ -377,6 +382,7 @@ class gamification_challenge(osv.Model): can be called after each change in the list of users or lines. :param list(int) ids: the list of challenge concerned""" + to_update = [] for challenge in self.browse(cr, uid, ids, context): (start_date, end_date) = start_end_date_for_period(challenge.period) @@ -403,7 +409,7 @@ class gamification_challenge(osv.Model): canceled_goal_ids = goal_obj.search(cr, uid, domain, 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) + to_update.extend(canceled_goal_ids) # skip to next user continue @@ -425,8 +431,9 @@ class gamification_challenge(osv.Model): values['remind_update_delay'] = challenge.remind_update_delay new_goal_id = goal_obj.create(cr, uid, values, context) + to_update.append(new_goal_id) - goal_obj.update(cr, uid, [new_goal_id], context=context) + goal_obj.update(cr, uid, to_update, context=context) return True @@ -460,7 +467,7 @@ class gamification_challenge(osv.Model): 'rank': , 'user_id': , 'name': , - 'state': , + 'state': , 'completeness': , 'current': , } @@ -478,7 +485,7 @@ class gamification_challenge(osv.Model): 'action': <{True,False}>, 'display_mode': <{progress,boolean}>, 'target': , - 'state': , + 'state': , 'completeness': , 'current': , } @@ -545,7 +552,7 @@ class gamification_challenge(osv.Model): if user_id and goal.user_id.id == user_id: line_data['own_goal_id'] = goal.id elif restrict_top and ranking > restrict_top: - # not own goal, over top, skipping + # not own goal and too low to be in top continue line_data['goals'].append({ diff --git a/addons/gamification/models/goal.py b/addons/gamification/models/goal.py index 925b05de5ab..80b2226e329 100644 --- a/addons/gamification/models/goal.py +++ b/addons/gamification/models/goal.py @@ -88,8 +88,16 @@ class gamification_goal_definition(osv.Model): string='Date Field', help='The date to use for the time period evaluated'), 'domain': fields.char("Filter Domain", - help="Domain for filtering records. The rule can contain reference to 'user' that is a browse record of the current user, e.g. [('user_id', '=', user.id)].", + help="Domain for filtering records. General rule, not user depending, e.g. [('state', '=', 'done')]. The expression can contain reference to 'user' which is a browse record of the current user if not in batch mode.", required=True), + + 'batch_mode': fields.boolean('Batch Mode', + help="Evaluate the expression in batch instead of once for each user"), + 'batch_distinctive_field': fields.many2one('ir.model.fields', + string="Distinctive field for batch user", + help="In batch mode, this indicates which field distinct one user form the other, e.g. user_id, partner_id..."), + 'batch_user_expression': fields.char("Evaluted expression for batch mode", + help="The value to compare with the distinctive field. The expression can contain reference to 'user' which is a browse record of the current user, e.g. user.id, user.partner_id.id..."), 'compute_code': fields.text('Python Code', help="Python code to be executed for each user. 'result' should contains the new current value. Evaluated user can be access through object.user_id."), 'condition': fields.selection([ @@ -102,7 +110,7 @@ class gamification_goal_definition(osv.Model): 'action_id': fields.many2one('ir.actions.act_window', string="Action", help="The action that will be called to update the goal value."), 'res_id_field': fields.char("ID Field of user", - help="The field name on the user profile (res.users) containing the value for res_id for action.") + help="The field name on the user profile (res.users) containing the value for res_id for action."), } _defaults = { @@ -158,7 +166,7 @@ class gamification_goal(osv.Model): _columns = { 'definition_id': fields.many2one('gamification.goal.definition', string='Goal Definition', required=True, ondelete="cascade"), 'user_id': fields.many2one('res.users', string='User', required=True), - 'line_id': fields.many2one('gamification.challenge.line', string='Goal Line', ondelete="cascade"), + 'line_id': fields.many2one('gamification.challenge.line', string='Challenge Line', ondelete="cascade"), 'challenge_id': fields.related('line_id', 'challenge_id', string="Challenge", type='many2one', @@ -175,7 +183,6 @@ class gamification_goal(osv.Model): 'state': fields.selection([ ('draft', 'Draft'), ('inprogress', 'In progress'), - ('inprogress_update', 'In progress (to update)'), ('reached', 'Reached'), ('failed', 'Failed'), ('canceled', 'Canceled'), @@ -183,6 +190,8 @@ class gamification_goal(osv.Model): string='State', required=True, track_visibility='always'), + 'to_update': fields.boolean('To update'), + 'closed': fields.boolean('Closed goal', help="These goals will not be recomputed."), 'computation_mode': fields.related('definition_id', 'computation_mode', type='char', string="Computation mode"), 'remind_update_delay': fields.integer('Remind delay', @@ -212,14 +221,14 @@ class gamification_goal(osv.Model): if goal.remind_update_delay and goal.last_update: delta_max = timedelta(days=goal.remind_update_delay) last_update = datetime.strptime(goal.last_update, DF).date() - if date.today() - last_update > delta_max and goal.state == 'inprogress': + if date.today() - last_update > delta_max: # generate a remind report temp_obj = self.pool.get('email.template') template_id = self.pool['ir.model.data'].get_object(cr, uid, 'gamification', 'email_template_goal_reminder', context) body_html = temp_obj.render_template(cr, uid, template_id.body_html, 'gamification.goal', goal.id, context=context) self.message_post(cr, uid, goal.id, body=body_html, partner_ids=[goal.user_id.partner_id.id], context=context, subtype='mail.mt_comment') - return {'state': 'inprogress_update'} + return {'to_update': True} return {} def update(self, cr, uid, ids, context=None): @@ -233,71 +242,123 @@ class gamification_goal(osv.Model): if context is None: context = {} + goals_by_definition = {} + goals_to_write = {} + all_goals = {} for goal in self.browse(cr, uid, ids, context=context): - towrite = {} if goal.state in ('draft', 'canceled'): - # skip if goal draft or canceled + # draft or canceled goals should not be recomputed continue - if goal.definition_id.computation_mode == 'manually': - towrite.update(self._check_remind_delay(cr, uid, goal, context)) + goals_by_definition.setdefault(goal.definition_id, []).append(goal) + goals_to_write[goal.id] = {} + all_goals[goal.id] = goal - elif goal.definition_id.computation_mode == 'python': - # execute the chosen method - cxt = { - 'self': self.pool.get('gamification.goal'), - 'object': goal, - 'pool': self.pool, - 'cr': cr, - 'context': dict(context), # copy context to prevent side-effects of eval - 'uid': uid, - 'result': False, - 'date': date, 'datetime': datetime, 'timedelta': timedelta, 'time': time - } - code = goal.definition_id.compute_code.strip() - safe_eval(code, cxt, mode="exec", nocopy=True) - # the result of the evaluated codeis put in the 'result' local variable, propagated to the context - result = cxt.get('result', False) - if result and type(result) in (float, int, long): - if result != goal.current: - towrite['current'] = result - else: - _logger.exception(_('Invalid return content from the evaluation of %s' % code)) + for definition, goals in goals_by_definition.items(): + if definition.computation_mode == 'manually': + for goal in goals: + goals_to_write[goal.id].update(self._check_remind_delay(cr, uid, goal, context)) + elif definition.computation_mode == 'python': + # TODO batch execution + for goal in goals: + # execute the chosen method + cxt = { + 'self': self.pool.get('gamification.goal'), + 'object': goal, + 'pool': self.pool, + 'cr': cr, + 'context': dict(context), # copy context to prevent side-effects of eval + 'uid': uid, + 'result': False, + 'date': date, 'datetime': datetime, 'timedelta': timedelta, 'time': time + } + code = definition.compute_code.strip() + safe_eval(code, cxt, mode="exec", nocopy=True) + # the result of the evaluated codeis put in the 'result' local variable, propagated to the context + result = cxt.get('result', False) + if result and type(result) in (float, int, long): + if result != goal.current: + goals_to_write[goal.id]['current'] = result + else: + _logger.exception(_('Invalid return content from the evaluation of code for definition %s' % definition.name)) else: # count or sum - obj = self.pool.get(goal.definition_id.model_id.model) - field_date_name = goal.definition_id.field_date_id.name - # eval the domain with user replaced by goal user object - domain = safe_eval(goal.definition_id.domain, {'user': goal.user_id}) + obj = self.pool.get(definition.model_id.model) + field_date_name = definition.field_date_id and definition.field_date_id.name or False - # add temporal clause(s) to the domain if fields are filled on the goal - if goal.start_date and field_date_name: - domain.append((field_date_name, '>=', goal.start_date)) - if goal.end_date and field_date_name: - domain.append((field_date_name, '<=', goal.end_date)) + if definition.computation_mode == 'count' and definition.batch_mode: - if goal.definition_id.computation_mode == 'sum': - field_name = goal.definition_id.field_id.name - res = obj.read_group(cr, uid, domain, [field_name], [field_name], context=context) - new_value = res and res[0][field_name] or 0.0 + general_domain = safe_eval(definition.domain) + # goal_distinct_values = {goal.id: safe_eval(definition.batch_user_expression, {'user': goal.user_id}) for goal in goals} + field_name = definition.batch_distinctive_field.name + # general_domain.append((field_name, 'in', list(set(goal_distinct_values.keys())))) + subqueries = {} + for goal in goals: + start_date = field_date_name and goal.start_date or False + end_date = field_date_name and goal.end_date or False + subqueries.setdefault((start_date, end_date), {}).update({goal.id:safe_eval(definition.batch_user_expression, {'user': goal.user_id})}) - else: # computation mode = count - new_value = obj.search(cr, uid, domain, context=context, count=True) + for (start_date, end_date), query_goals in subqueries.items(): + subquery_domain = list(general_domain) + subquery_domain.append((field_name, 'in', list(set(query_goals.values())))) + if start_date: + subquery_domain.append((field_date_name, '>=', start_date)) + if end_date: + subquery_domain.append((field_date_name, '>=', end_date)) - # avoid useless write if the new value is the same as the old one - if new_value != goal.current: - towrite['current'] = new_value + user_values = obj.read_group(cr, uid, subquery_domain, fields=[field_name], groupby=[field_name], context=context) + + for goal in [g for g in goals if g.id in query_goals.keys()]: + for user_value in user_values: + # return format of read_group: [{'partner_id': 42, 'partner_id_count': 3},...] + queried_value = field_name in user_value and user_value[field_name] or False + if isinstance(queried_value, tuple) and len(queried_value) == 2 and isinstance(queried_value[0], (int, long)): + queried_value = queried_value[0] + if queried_value == query_goals[goal.id]: + new_value = user_value.get(field_name+'_count', goal.current) + if new_value != goal.current: + goals_to_write[goal.id]['current'] = new_value + + else: + for goal in goals: + # eval the domain with user replaced by goal user object + domain = safe_eval(definition.domain, {'user': goal.user_id}) + + # add temporal clause(s) to the domain if fields are filled on the goal + if goal.start_date and field_date_name: + domain.append((field_date_name, '>=', goal.start_date)) + if goal.end_date and field_date_name: + domain.append((field_date_name, '<=', goal.end_date)) + + if definition.computation_mode == 'sum': + field_name = definition.field_id.name + res = obj.read_group(cr, uid, domain, [field_name], [field_name], context=context) + new_value = res and res[0][field_name] or 0.0 + + else: # computation mode = count + new_value = obj.search(cr, uid, domain, context=context, count=True) + + # avoid useless write if the new value is the same as the old one + if new_value != goal.current: + goals_to_write[goal.id]['current'] = new_value + + for goal_id, value in goals_to_write.items(): + if not value: + continue + goal = all_goals[goal_id] # check goal target reached - if (goal.definition_condition == 'higher' and towrite.get('current', goal.current) >= goal.target_goal) or (goal.definition_condition == 'lower' and towrite.get('current', goal.current) <= goal.target_goal): - towrite['state'] = 'reached' + if (goal.definition_condition == 'higher' and value.get('current', goal.current) >= goal.target_goal) \ + or (goal.definition_condition == 'lower' and value.get('current', goal.current) <= goal.target_goal): + value['state'] = 'reached' # check goal failure elif goal.end_date and fields.date.today() > goal.end_date: - towrite['state'] = 'failed' - if towrite: - self.write(cr, uid, [goal.id], towrite, context=context) + value['state'] = 'failed' + value['closed'] = True + if value: + self.write(cr, uid, [goal.id], value, context=context) return True def action_start(self, cr, uid, ids, context=None): diff --git a/addons/gamification/static/img/badge_hidden-image.png b/addons/gamification/static/img/badge_hidden-image.png index 2b9040d5764dae71c0d950412f91cdfa3d865aef..1c5cf7b6f5dfbe732c5d8b6ba3fa13ac92e004f7 100644 GIT binary patch literal 63364 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 0) { - new instance.web.Model('gamification.badge').call('check_progress', []); - $(document).off('keydown.klistener'); - } - } - }); } }, start: function() { @@ -126,6 +111,13 @@ openerp.gamification = function(instance) { } }); + instance.web.WebClient.include({ + to_kitten: function() { + this._super(); + new instance.web.Model('gamification.badge').call('check_progress', []); + } + }); + instance.mail.Widget.include({ start: function() { this._super(); diff --git a/addons/gamification/views/goal.xml b/addons/gamification/views/goal.xml index 1c408e3ab11..528d5db0511 100644 --- a/addons/gamification/views/goal.xml +++ b/addons/gamification/views/goal.xml @@ -45,8 +45,8 @@
@@ -105,7 +105,7 @@ @@ -157,7 +157,7 @@
W - N + N X
@@ -241,15 +241,23 @@ - - + + + + +
In batch mode, the domain is evaluated globally. If enabled, do not use keyword 'user' in above filter domain.
+ + +
- + diff --git a/addons/gamification/wizard/update_goal.py b/addons/gamification/wizard/update_goal.py index cbda3fefbce..95ba76299ec 100644 --- a/addons/gamification/wizard/update_goal.py +++ b/addons/gamification/wizard/update_goal.py @@ -38,6 +38,7 @@ class goal_manual_wizard(osv.TransientModel): towrite = { 'current': wiz.current, 'goal_id': wiz.goal_id.id, + 'to_update': False, } goal_obj.write(cr, uid, [wiz.goal_id.id], towrite, context=context) goal_obj.update(cr, uid, [wiz.goal_id.id], context=context)