From 1157e2aeed78166f5e01dab0f591b36ad8d8d07b Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 27 Apr 2026 15:12:21 +0200 Subject: [PATCH] Events/subevents: Fix missing logging for meta changes (Z#23232443) (#6110) * Events/subevents: Fix missing logging for meta changes (Z#23232443) * Fix logging --- src/pretix/control/views/event.py | 22 +++++++++----- src/pretix/control/views/item.py | 8 ++--- src/pretix/control/views/subevents.py | 43 +++++++++++++++++++-------- 3 files changed, 48 insertions(+), 25 deletions(-) diff --git a/src/pretix/control/views/event.py b/src/pretix/control/views/event.py index 7a25d97bc8..d566050fca 100644 --- a/src/pretix/control/views/event.py +++ b/src/pretix/control/views/event.py @@ -234,13 +234,21 @@ class EventUpdate(DecoupleMixin, EventSettingsViewMixin, EventPermissionRequired self.request.event.log_action('pretix.event.footerlinks.changed', user=self.request.user, data={ 'data': self.footer_links_formset.cleaned_data }) - if form.has_changed(): - self.request.event.log_action('pretix.event.changed', user=self.request.user, data={ - k: (form.cleaned_data.get(k).name - if isinstance(form.cleaned_data.get(k), File) - else form.cleaned_data.get(k)) - for k in form.changed_data - }) + + change_data = { + k: (form.cleaned_data.get(k).name + if isinstance(form.cleaned_data.get(k), File) + else form.cleaned_data.get(k)) + for k in form.changed_data + } + meta_changed = {} + for f in self.meta_forms: + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] + if meta_changed: + change_data['meta_data'] = meta_changed + if change_data: + self.request.event.log_action('pretix.event.changed', user=self.request.user, data=change_data) tickets.invalidate_cache.apply_async(kwargs={'event': self.request.event.pk}) messages.success(self.request, _('Your changes have been saved.')) diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index 179b8cd095..f55f678c0e 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -1447,12 +1447,8 @@ class ItemUpdateGeneral(ItemDetailMixin, EventPermissionRequiredMixin, MetaDataE meta_changed = {} for f in self.meta_forms: - meta_changed.update({ - k: (f.cleaned_data.get(k).name - if isinstance(f.cleaned_data.get(k), File) - else f.cleaned_data.get(k)) - for k in f.changed_data - }) + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] if meta_changed: change_data['meta_data'] = meta_changed diff --git a/src/pretix/control/views/subevents.py b/src/pretix/control/views/subevents.py index 2477231ce3..4d5fbbc0c3 100644 --- a/src/pretix/control/views/subevents.py +++ b/src/pretix/control/views/subevents.py @@ -540,20 +540,31 @@ class SubEventUpdate(EventPermissionRequiredMixin, SubEventEditorMixin, UpdateVi # TODO: LogEntry? messages.success(self.request, _('Your changes have been saved.')) - if form.has_changed() or any(f.has_changed() for f in self.plugin_forms): - data = { - k: form.cleaned_data.get(k) for k in form.changed_data - } - for f in self.plugin_forms: - data.update({ - k: (f.cleaned_data.get(k).name - if isinstance(f.cleaned_data.get(k), File) - else f.cleaned_data.get(k)) - for k in f.changed_data - }) + + change_data = { + k: (form.cleaned_data.get(k).name + if isinstance(form.cleaned_data.get(k), File) + else form.cleaned_data.get(k)) + for k in form.changed_data + } + meta_changed = {} + for f in self.meta_forms: + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] + if meta_changed: + change_data['meta_data'] = meta_changed + for f in self.plugin_forms: + change_data.update({ + k: (f.cleaned_data.get(k).name + if isinstance(f.cleaned_data.get(k), File) + else f.cleaned_data.get(k)) + for k in f.changed_data + }) + if change_data: self.object.log_action( - 'pretix.subevent.changed', user=self.request.user, data=data + 'pretix.subevent.changed', user=self.request.user, data=change_data ) + for f in self.plugin_forms: f.subevent = self.object f.save() @@ -628,6 +639,14 @@ class SubEventCreate(SubEventEditorMixin, EventPermissionRequiredMixin, CreateVi else f.cleaned_data.get(k)) for k in f.cleaned_data }) + + meta_changed = {} + for f in self.meta_forms: + if f.has_changed(): + meta_changed[f.property.name] = f.cleaned_data["value"] + if meta_changed: + data['meta_data'] = meta_changed + form.instance.log_action('pretix.subevent.added', data=dict(data), user=self.request.user) self.save_formset(form.instance)