[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:
@@ -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):
|
||||
|
||||
@@ -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})
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user