diff --git a/src/pretix/api/webhooks.py b/src/pretix/api/webhooks.py index c070eaf47e..dedddac749 100644 --- a/src/pretix/api/webhooks.py +++ b/src/pretix/api/webhooks.py @@ -384,7 +384,7 @@ def register_default_webhook_events(sender, **kwargs): def notify_webhooks(logentry_ids: list): if not isinstance(logentry_ids, list): logentry_ids = [logentry_ids] - qs = LogEntry.all.select_related('event', 'event__organizer', 'organizer_link').filter(id__in=logentry_ids) + qs = LogEntry.all.select_related('event', 'event__organizer', 'organizer').filter(id__in=logentry_ids) _org, _at, webhooks = None, None, None for logentry in qs: if not logentry.organizer: diff --git a/src/pretix/base/migrations/0254_alter_logentry_organizer_link_and_more.py b/src/pretix/base/migrations/0254_alter_logentry_organizer_link_and_more.py new file mode 100644 index 0000000000..8f94d5aea0 --- /dev/null +++ b/src/pretix/base/migrations/0254_alter_logentry_organizer_link_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.4 on 2023-12-06 14:53 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("pretixbase", "0253_checkin_info"), + ] + + operations = [ + migrations.AlterField( + model_name="logentry", + name="organizer_link", + field=models.ForeignKey( + db_column="organizer_link_id", + null=True, + on_delete=django.db.models.deletion.PROTECT, + to="pretixbase.organizer", + ), + ), + migrations.RenameField( + model_name="logentry", + old_name="organizer_link", + new_name="organizer", + ), + ] diff --git a/src/pretix/base/models/base.py b/src/pretix/base/models/base.py index cd754b1325..c1c1fb5534 100644 --- a/src/pretix/base/models/base.py +++ b/src/pretix/base/models/base.py @@ -115,7 +115,7 @@ class LoggingMixin: kwargs['api_token'] = api_token logentry = LogEntry(content_object=self, user=user, action_type=action, event=event, - organizer_link_id=organizer_id, **kwargs) + organizer_id=organizer_id, **kwargs) if isinstance(data, dict): sensitivekeys = ['password', 'secret', 'api_key'] diff --git a/src/pretix/base/models/log.py b/src/pretix/base/models/log.py index 3f715a1246..960f5d26a4 100644 --- a/src/pretix/base/models/log.py +++ b/src/pretix/base/models/log.py @@ -78,7 +78,7 @@ class LogEntry(models.Model): device = models.ForeignKey('Device', null=True, blank=True, on_delete=models.PROTECT) oauth_application = models.ForeignKey('pretixapi.OAuthApplication', null=True, blank=True, on_delete=models.PROTECT) event = models.ForeignKey('Event', null=True, blank=True, on_delete=models.SET_NULL) - organizer_link = models.ForeignKey('Organizer', null=True, blank=True, on_delete=models.PROTECT) + organizer = models.ForeignKey('Organizer', null=True, blank=True, on_delete=models.PROTECT, db_column='organizer_link_id') action_type = models.CharField(max_length=255) data = models.TextField(default='{}') visible = models.BooleanField(default=True) @@ -123,22 +123,6 @@ class LogEntry(models.Model): typepath = typepath.rsplit('.', 1)[0] return no_type - @cached_property - def organizer(self): - from .organizer import Organizer - - if self.organizer_link: - return self.organizer_link - elif self.event: - return self.event.organizer - elif hasattr(self.content_object, 'event'): - return self.content_object.event.organizer - elif hasattr(self.content_object, 'organizer'): - return self.content_object.organizer - elif isinstance(self.content_object, Organizer): - return self.content_object - return None - @cached_property def display_object(self): from . import (