Sendmail: Improve performance of creating rules

This commit is contained in:
Raphael Michel
2021-06-30 12:31:20 +02:00
parent 212f33afee
commit 11b1c81633

View File

@@ -210,6 +210,7 @@ class Rule(models.Model):
objects = ScopedManager(organizer='event__organizer') objects = ScopedManager(organizer='event__organizer')
def save(self, **kwargs): def save(self, **kwargs):
is_creation = not self.pk
super().save(**kwargs) super().save(**kwargs)
create_sms = [] create_sms = []
@@ -223,8 +224,9 @@ class Rule(models.Model):
else: else:
ScheduledMail.objects.get_or_create(rule=self, event=self.event) ScheduledMail.objects.get_or_create(rule=self, event=self.event)
if not is_creation:
update_sms = [] update_sms = []
for sm in self.scheduledmail_set.all(): for sm in self.scheduledmail_set.prefetch_related('event').select_related('subevent'):
if sm in create_sms: if sm in create_sms:
continue continue
previous = sm.computed_datetime previous = sm.computed_datetime