From f82aeb05d0c8c567e9929a36b18dff74f9fbdcc3 Mon Sep 17 00:00:00 2001 From: David Monjoie Date: Wed, 28 Sep 2016 13:12:55 +0200 Subject: [PATCH] [FIX] event: fix registration confirmation delay The previous line was O(n^2). With n=1200 like we just have now, things didn't look good for this loop and confirming an attendee registration to such event took approx. 13 seconds. Since the list comprehension is in no mean linked to the value of "item" in the filter, I simply moved it out so it is only computed once. --- addons/event/models/event_mail.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/addons/event/models/event_mail.py b/addons/event/models/event_mail.py index d6db023bcd7..84689fe7e2e 100644 --- a/addons/event/models/event_mail.py +++ b/addons/event/models/event_mail.py @@ -71,7 +71,8 @@ class EventMailScheduler(models.Model): if self.interval_type == 'after_sub': # update registration lines lines = [] - for registration in filter(lambda item: item not in [mail_reg.registration_id for mail_reg in self.mail_registration_ids], self.event_id.registration_ids): + reg_ids = [mail_reg.registration_id for mail_reg in self.mail_registration_ids] + for registration in filter(lambda item: item not in reg_ids, self.event_id.registration_ids): lines.append((0, 0, {'registration_id': registration.id})) if lines: self.write({'mail_registration_ids': lines})