From 7bf854fe0ba1535617069715998aab80d11c5514 Mon Sep 17 00:00:00 2001 From: Martin Gross Date: Wed, 4 Aug 2021 13:11:06 -0400 Subject: [PATCH] Add uninstall-handler for plugins --- src/pretix/base/models/event.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/pretix/base/models/event.py b/src/pretix/base/models/event.py index b35893a3d..cd2b9c51c 100644 --- a/src/pretix/base/models/event.py +++ b/src/pretix/base/models/event.py @@ -1118,15 +1118,18 @@ class Event(EventMixin, LoggedModel): self.items.all().delete() self.subevents.all().delete() - def set_active_plugins(self, modules, allow_restricted=False): + def get_available_plugins(self): from pretix.base.plugins import get_all_plugins - plugins_active = self.get_plugins() - plugins_available = { + return { p.module: p for p in get_all_plugins(self) if not p.name.startswith('.') and getattr(p, 'visible', True) } + def set_active_plugins(self, modules, allow_restricted=False): + plugins_active = self.get_plugins() + plugins_available = self.get_available_plugins() + enable = [m for m in modules if m not in plugins_active and m in plugins_available] for module in enable: @@ -1155,6 +1158,10 @@ class Event(EventMixin, LoggedModel): plugins_active.remove(module) self.set_active_plugins(plugins_active) + plugins_available = self.get_available_plugins() + if hasattr(plugins_available[module].app, 'uninstalled'): + getattr(plugins_available[module].app, 'uninstalled')(self) + regenerate_css.apply_async(args=(self.pk,)) @staticmethod