Optimize N+1 query found by Sentry in event creation (PRETIXEU-9AV)

This commit is contained in:
Raphael Michel
2023-11-09 14:31:05 +01:00
parent 77ff0298f1
commit 3566fc877a

View File

@@ -1001,6 +1001,7 @@ class Event(EventMixin, LoggedModel):
'presale_widget_css_file', 'presale_widget_css_file',
'presale_widget_css_checksum', 'presale_widget_css_checksum',
) )
settings_to_save = []
for s in other.settings._objects.all(): for s in other.settings._objects.all():
if s.key in skip_settings: if s.key in skip_settings:
continue continue
@@ -1018,16 +1019,17 @@ class Event(EventMixin, LoggedModel):
) )
newname = default_storage.save(fname, fi) newname = default_storage.save(fname, fi)
s.value = 'file://' + newname s.value = 'file://' + newname
s.save() settings_to_save.append(s)
elif s.key == 'tax_rate_default': elif s.key == 'tax_rate_default':
try: try:
if int(s.value) in tax_map: if int(s.value) in tax_map:
s.value = tax_map.get(int(s.value)).pk s.value = tax_map.get(int(s.value)).pk
s.save() settings_to_save.append(s)
except ValueError: except ValueError:
pass pass
else: else:
s.save() settings_to_save.append(s)
other.settings._objects.bulk_create(settings_to_save)
self.settings.flush() self.settings.flush()
event_copy_data.send( event_copy_data.send(