[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:
Victor Feyens
2020-04-30 12:33:42 +02:00
parent db957181fe
commit db79d20a1d
+11 -9
View File
@@ -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)