From c13d873f1f6b1fe7f8617073ac6af0ef8f7cf78a Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 4 Aug 2022 15:41:45 +0200 Subject: [PATCH] Invalidate tickets when item meta data is changed --- src/pretix/control/views/item.py | 40 +++++++++++++++++++++----------- 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/pretix/control/views/item.py b/src/pretix/control/views/item.py index d677322b3..2cdec6efc 100644 --- a/src/pretix/control/views/item.py +++ b/src/pretix/control/views/item.py @@ -1344,22 +1344,36 @@ class ItemUpdateGeneral(ItemDetailMixin, EventPermissionRequiredMixin, MetaDataE def form_valid(self, form): self.save_meta() 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) + for k in form.changed_data + } + 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 + }) + + 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 meta_changed: + change_data['meta_data'] = meta_changed + + if change_data: self.object.log_action( - 'pretix.event.item.changed', user=self.request.user, data=data + 'pretix.event.item.changed', user=self.request.user, data=change_data ) invalidate_cache.apply_async(kwargs={'event': self.request.event.pk, 'item': self.object.pk}) + for f in self.plugin_forms: f.save()