From bb8e24d9519ea4b131bed0a173ca65301bf196c1 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 18 Apr 2014 14:41:12 +0200 Subject: [PATCH 1/8] [FIX] website_forum: set badges and challenges in noupdate bzr revid: mat@openerp.com-20140418124112-m97idrklxq8y3e3f --- addons/website_forum/data/badges_answer.xml | 2 +- addons/website_forum/data/badges_moderation.xml | 2 +- addons/website_forum/data/badges_participation.xml | 2 +- addons/website_forum/data/badges_question.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/website_forum/data/badges_answer.xml b/addons/website_forum/data/badges_answer.xml index 4e92600663d..d4e9ead5f89 100644 --- a/addons/website_forum/data/badges_answer.xml +++ b/addons/website_forum/data/badges_answer.xml @@ -1,6 +1,6 @@ - + diff --git a/addons/website_forum/data/badges_moderation.xml b/addons/website_forum/data/badges_moderation.xml index d99508bba51..2ebb0f23cd1 100644 --- a/addons/website_forum/data/badges_moderation.xml +++ b/addons/website_forum/data/badges_moderation.xml @@ -1,6 +1,6 @@ - + diff --git a/addons/website_forum/data/badges_participation.xml b/addons/website_forum/data/badges_participation.xml index cf1f79185e1..8c922f09b33 100644 --- a/addons/website_forum/data/badges_participation.xml +++ b/addons/website_forum/data/badges_participation.xml @@ -1,6 +1,6 @@ - + diff --git a/addons/website_forum/data/badges_question.xml b/addons/website_forum/data/badges_question.xml index ab05d8bcf7a..f0d403a3455 100644 --- a/addons/website_forum/data/badges_question.xml +++ b/addons/website_forum/data/badges_question.xml @@ -1,6 +1,6 @@ - + From 202ee0208bca8731dcd8918d0c87aabbb9d526b8 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 18 Apr 2014 14:42:20 +0200 Subject: [PATCH 2/8] [IMP] gamification: add use_ids fields if technical features bzr revid: mat@openerp.com-20140418124220-fvsgvvgunmeq3opj --- addons/gamification/views/challenge.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/addons/gamification/views/challenge.xml b/addons/gamification/views/challenge.xml index 75dcd4a7959..87dea680222 100644 --- a/addons/gamification/views/challenge.xml +++ b/addons/gamification/views/challenge.xml @@ -48,6 +48,7 @@ @@ -174,7 +174,7 @@ once personal never - [('groups_id', 'in', ref('base.user_root'))] + inprogress other diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index beeb859a03b..ea698ca77fa 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -212,7 +212,6 @@ class gamification_challenge(osv.Model): def create(self, cr, uid, vals, context=None): """Overwrite the create method to add the user of groups""" - # add users when change the group auto-subscription if vals.get('user_domain'): user_ids = self._get_challenger_users(cr, uid, vals.get('user_domain'), context=context) @@ -233,7 +232,14 @@ class gamification_challenge(osv.Model): def write(self, cr, uid, ids, vals, context=None): if isinstance(ids, (int,long)): ids = [ids] - + + if vals.get('user_domain'): + user_ids = self._get_challenger_users(cr, uid, vals.get('user_domain'), context=context) + + if not vals.get('user_ids'): + vals['user_ids'] = [] + vals['user_ids'] += [(4, user_id) for user_id in user_ids] + write_res = super(gamification_challenge, self).write(cr, uid, ids, vals, context=context) if vals.get('state') == 'inprogress': diff --git a/addons/gamification_sale_crm/sale_crm_goals.xml b/addons/gamification_sale_crm/sale_crm_goals.xml index fbc1c952bb8..13bf49767dc 100644 --- a/addons/gamification_sale_crm/sale_crm_goals.xml +++ b/addons/gamification_sale_crm/sale_crm_goals.xml @@ -130,7 +130,7 @@ Monthly Sales Targets monthly ranking - [('groups_id', 'in', ref('base.group_sale_salesman'))] + weekly @@ -138,7 +138,7 @@ Lead Acquisition monthly ranking - [('groups_id', 'in', ref('base.group_sale_salesman'))] + " weekly From 4725d6f532adf0ed7e62e47d535e673ec9388f83 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 18 Apr 2014 18:34:40 +0200 Subject: [PATCH 6/8] [REF] gamification: remove unused ref local variable bzr revid: mat@openerp.com-20140418163440-7y1k3sliuk9bgco8 --- addons/gamification/models/challenge.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index ea698ca77fa..c7896b61851 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -337,8 +337,7 @@ class gamification_challenge(osv.Model): return True def _get_challenger_users(self, cr, uid, domain, context=None): - ref = functools.partial(self.pool['ir.model.data'].xmlid_to_res_id, cr, uid) - user_domain = eval(domain, {'ref': ref}) + user_domain = eval(domain) return self.pool['res.users'].search(cr, uid, user_domain, context=context) def _recompute_challenge_users(self, cr, uid, challenge_ids, context=None): From b24252d5e967dfac4818163c849d924274ba0e75 Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Fri, 18 Apr 2014 18:38:37 +0200 Subject: [PATCH 7/8] [IMP] gamification: force domain to be in unicode bzr revid: mat@openerp.com-20140418163837-32nldgj5u04q9kyu --- addons/gamification/models/challenge.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index c7896b61851..bc49c434a13 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -21,14 +21,13 @@ from openerp import SUPERUSER_ID from openerp.osv import fields, osv -from openerp.tools import DEFAULT_SERVER_DATE_FORMAT as DF +from openerp.tools import ustr, DEFAULT_SERVER_DATE_FORMAT as DF from openerp.tools.safe_eval import safe_eval as eval from openerp.tools.translate import _ from datetime import date, datetime, timedelta import calendar import logging -import functools _logger = logging.getLogger(__name__) # display top 3 in ranking, could be db variable @@ -337,7 +336,7 @@ class gamification_challenge(osv.Model): return True def _get_challenger_users(self, cr, uid, domain, context=None): - user_domain = eval(domain) + user_domain = eval(ustr(domain)) return self.pool['res.users'].search(cr, uid, user_domain, context=context) def _recompute_challenge_users(self, cr, uid, challenge_ids, context=None): From 6022f890cb500137f170df6277c4cfc0bd7b831d Mon Sep 17 00:00:00 2001 From: Martin Trigaux Date: Tue, 22 Apr 2014 09:52:47 +0200 Subject: [PATCH 8/8] [FIX] gamification: convert calls to private method and don't forget to create missing goals bzr revid: mat@openerp.com-20140422075247-5rddurvr6ymt80mo --- addons/gamification/models/challenge.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/addons/gamification/models/challenge.py b/addons/gamification/models/challenge.py index bc49c434a13..1658c4eab08 100644 --- a/addons/gamification/models/challenge.py +++ b/addons/gamification/models/challenge.py @@ -243,7 +243,7 @@ class gamification_challenge(osv.Model): if vals.get('state') == 'inprogress': self._recompute_challenge_users(cr, uid, ids, context=context) - self.generate_goals_from_challenge(cr, uid, ids, context=context) + self._generate_goals_from_challenge(cr, uid, ids, context=context) elif vals.get('state') == 'done': self.check_challenge_reward(cr, uid, ids, force=True, context=context) @@ -308,7 +308,7 @@ class gamification_challenge(osv.Model): goal_obj.update(cr, uid, goal_ids, context=context) self._recompute_challenge_users(cr, uid, ids, context=context) - self.generate_goals_from_challenge(cr, uid, ids, context=context) + self._generate_goals_from_challenge(cr, uid, ids, context=context) for challenge in self.browse(cr, uid, ids, context=context): @@ -421,6 +421,7 @@ class gamification_challenge(osv.Model): WHERE line_id = %s {date_clause} """.format(date_clause=date_clause) + cr.execute(query, query_params) user_with_goal_ids = cr.dictfetchall() user_without_goal_ids = list(set([user.id for user in challenge.user_ids]) - set([user['user_id'] for user in user_with_goal_ids])) @@ -442,6 +443,8 @@ class gamification_challenge(osv.Model): for user_id in user_without_goal_ids: values.update({'user_id': user_id}) + goal_id = goal_obj.create(cr, uid, values, context=context) + to_update.append(goal_id) goal_obj.update(cr, uid, to_update, context=context) @@ -654,7 +657,7 @@ class gamification_challenge(osv.Model): message = "%s has joined the challenge" % user.name self.message_post(cr, SUPERUSER_ID, challenge_ids, body=message, context=context) self.write(cr, SUPERUSER_ID, challenge_ids, {'invited_user_ids': [(3, user_id)], 'user_ids': [(4, user_id)]}, context=context) - return self.generate_goals_from_challenge(cr, SUPERUSER_ID, challenge_ids, context=context) + return self._generate_goals_from_challenge(cr, SUPERUSER_ID, challenge_ids, context=context) # TODO in trunk, remove unused parameter user_id def discard_challenge(self, cr, uid, challenge_ids, context=None, user_id=None):