forked from CGM_Public/pretix_original
Sendmail: Improve performance of creating rules
This commit is contained in:
@@ -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,16 +224,17 @@ 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)
|
||||||
|
|
||||||
update_sms = []
|
if not is_creation:
|
||||||
for sm in self.scheduledmail_set.all():
|
update_sms = []
|
||||||
if sm in create_sms:
|
for sm in self.scheduledmail_set.prefetch_related('event').select_related('subevent'):
|
||||||
continue
|
if sm in create_sms:
|
||||||
previous = sm.computed_datetime
|
continue
|
||||||
sm.recompute()
|
previous = sm.computed_datetime
|
||||||
if sm.computed_datetime != previous:
|
sm.recompute()
|
||||||
update_sms.append(sm)
|
if sm.computed_datetime != previous:
|
||||||
|
update_sms.append(sm)
|
||||||
|
|
||||||
ScheduledMail.objects.bulk_update(update_sms, ['computed_datetime', 'last_computed'], 100)
|
ScheduledMail.objects.bulk_update(update_sms, ['computed_datetime', 'last_computed'], 100)
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def human_readable_time(self):
|
def human_readable_time(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user