[IMP] snailmail: res.partner write performance
Do not loop through the partners, doing the same stuff n times, and potentially doing multiple searches when one is enough. X-original-commit: 35713d2ff46dcfc4a578c41dad6f786919754ca2
This commit is contained in:
@@ -10,16 +10,18 @@ class ResPartner(models.Model):
|
||||
_inherit = "res.partner"
|
||||
|
||||
def write(self, vals):
|
||||
for id in self.ids:
|
||||
letter_address_vals = {}
|
||||
address_fields = ['street', 'street2', 'city', 'zip', 'state_id', 'country_id']
|
||||
for field in address_fields:
|
||||
if field in vals:
|
||||
letter_address_vals[field] = vals[field]
|
||||
letter_address_vals = {}
|
||||
address_fields = ['street', 'street2', 'city', 'zip', 'state_id', 'country_id']
|
||||
for field in address_fields:
|
||||
if field in vals:
|
||||
letter_address_vals[field] = vals[field]
|
||||
|
||||
if len(letter_address_vals):
|
||||
letter_ids = self.env['snailmail.letter'].search([('state', 'not in', ['sent', 'canceled']), ('partner_id', '=', id)])
|
||||
letter_ids.write(letter_address_vals)
|
||||
if letter_address_vals:
|
||||
letters = self.env['snailmail.letter'].search([
|
||||
('state', 'not in', ['sent', 'canceled']),
|
||||
('partner_id', 'in', self.ids),
|
||||
])
|
||||
letters.write(letter_address_vals)
|
||||
|
||||
return super(ResPartner, self).write(vals)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user