[IMP] gamification: support batch creation

See merge commit for more details.

Task ID-2330149
COM PR odoo/odoo#61246
ENT PR odoo/enterprise#14561
This commit is contained in:
Victor Feyens
2020-12-03 10:19:07 +00:00
committed by Thibault Delavallée
parent 8016591353
commit 9c87db3c62
3 changed files with 27 additions and 24 deletions
+5 -4
View File
@@ -52,10 +52,11 @@ class BadgeUser(models.Model):
return True
@api.model
def create(self, vals):
self.env['gamification.badge'].browse(vals['badge_id']).check_granting()
return super(BadgeUser, self).create(vals)
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
self.env['gamification.badge'].browse(vals['badge_id']).check_granting()
return super().create(vals_list)
class GamificationBadge(models.Model):
+9 -9
View File
@@ -154,18 +154,18 @@ class Challenge(models.Model):
return template.id if template else False
@api.model
def create(self, vals):
@api.model_create_multi
def create(self, vals_list):
"""Overwrite the create method to add the user of groups"""
for vals in vals_list:
if vals.get('user_domain'):
users = self._get_challenger_users(ustr(vals.get('user_domain')))
if vals.get('user_domain'):
users = self._get_challenger_users(ustr(vals.get('user_domain')))
if not vals.get('user_ids'):
vals['user_ids'] = []
vals['user_ids'].extend((4, user.id) for user in users)
if not vals.get('user_ids'):
vals['user_ids'] = []
vals['user_ids'].extend((4, user.id) for user in users)
return super(Challenge, self).create(vals)
return super().create(vals_list)
def write(self, vals):
if vals.get('user_domain'):
+13 -11
View File
@@ -122,14 +122,16 @@ class GoalDefinition(models.Model):
error=e
))
@api.model
def create(self, vals):
definition = super(GoalDefinition, self).create(vals)
if definition.computation_mode in ('count', 'sum'):
definition._check_domain_validity()
if vals.get('field_id'):
definition._check_model_validity()
return definition
@api.model_create_multi
def create(self, vals_list):
definitions = super(GoalDefinition, self).create(vals_list)
definitions.filtered_domain([
('computation_mode', 'in', ['count', 'sum']),
])._check_domain_validity()
definitions.filtered_domain([
('field_id', '=', 'True'),
])._check_model_validity()
return definitions
def write(self, vals):
res = super(GoalDefinition, self).write(vals)
@@ -386,9 +388,9 @@ class Goal(models.Model):
next goal update."""
return self.write({'state': 'inprogress'})
@api.model
def create(self, vals):
return super(Goal, self.with_context(no_remind_goal=True)).create(vals)
@api.model_create_multi
def create(self, vals_list):
return super(Goal, self.with_context(no_remind_goal=True)).create(vals_list)
def write(self, vals):
"""Overwrite the write method to update the last_update field to today