[FIX] *: correct support of multi records in methods

Wrong usage of self in for loops makes some apparently multi-friendly
methods not work correctly when called with a recordset of len > 1.

This commit replaces those references by the correct unique record
reference which should be used at this iteration of the loop, avoiding
potential exceptions or wrong behavior in the concerned methods.

closes odoo/odoo#53320

Signed-off-by: Victor Feyens (vfe) <vfe@odoo.com>
This commit is contained in:
Victor Feyens
2020-06-19 13:27:41 +00:00
parent 630beba02e
commit bdcad21ccc
7 changed files with 10 additions and 10 deletions
+1 -1
View File
@@ -38,7 +38,7 @@ class ReSequenceWizard(models.TransientModel):
@api.depends('first_name')
def _compute_sequence_number_reset(self):
for record in self:
record.sequence_number_reset = self.move_ids[0]._deduce_sequence_number_reset(record.first_name)
record.sequence_number_reset = record.move_ids[0]._deduce_sequence_number_reset(record.first_name)
@api.depends('move_ids')
def _compute_first_name(self):
+2 -2
View File
@@ -16,7 +16,7 @@ class FleetVehicle(models.Model):
raise AccessError(_("Sorry, you must be at least a fleet user to make this action."))
for vehicle in self:
analytic_account = self.env['account.analytic.account'].sudo().create([{
'name': self._get_analytic_name(),
'company_id': self.company_id.id or self.env.company.id,
'name': vehicle._get_analytic_name(),
'company_id': vehicle.company_id.id or self.env.company.id,
}])
vehicle.write({'analytic_account_id': analytic_account.id})
+1 -1
View File
@@ -938,7 +938,7 @@ class HrExpenseSheet(models.Model):
self.write({'state': 'cancel'})
for sheet in self:
sheet.message_post_with_view('hr_expense.hr_expense_template_refuse_reason', values={'reason': reason, 'is_sheet': True, 'name': self.name})
sheet.message_post_with_view('hr_expense.hr_expense_template_refuse_reason', values={'reason': reason, 'is_sheet': True, 'name': sheet.name})
self.activity_update()
def reset_expense_sheets(self):
+1 -1
View File
@@ -138,7 +138,7 @@ class ResConfigSettings(models.TransientModel):
@api.depends('language_ids')
def _compute_website_language_count(self):
for config in self:
config.website_language_count = len(self.language_ids)
config.website_language_count = len(config.language_ids)
def set_values(self):
super(ResConfigSettings, self).set_values()
+3 -3
View File
@@ -976,16 +976,16 @@ class Vote(models.Model):
values.pop('user_id', None)
for vote in self:
self._check_general_rights(values)
vote._check_general_rights(values)
if 'vote' in values:
if (values['vote'] == '1' or vote.vote == '-1' and values['vote'] == '0'):
upvote = True
elif (values['vote'] == '-1' or vote.vote == '1' and values['vote'] == '0'):
upvote = False
self._check_karma_rights(upvote)
vote._check_karma_rights(upvote)
# karma update
self._vote_update_karma(vote.vote, values['vote'])
vote._vote_update_karma(vote.vote, values['vote'])
res = super(Vote, self).write(values)
return res
+1 -1
View File
@@ -530,7 +530,7 @@ class Slide(models.Model):
mail_ids = []
base_url = self.env['ir.config_parameter'].sudo().get_param('web.base.url')
for record in self:
template = self.channel_id.share_template_id.with_context(
template = record.channel_id.share_template_id.with_context(
user=self.env.user,
email=email,
base_url=base_url,
+1 -1
View File
@@ -80,7 +80,7 @@ class ir_cron(models.Model):
def method_direct_trigger(self):
self.check_access_rights('write')
for cron in self:
self.with_user(cron.user_id).ir_actions_server_id.run()
cron.with_user(cron.user_id).ir_actions_server_id.run()
return True
@api.model