Add uninstall-handler for plugins

This commit is contained in:
Martin Gross
2021-08-04 13:11:06 -04:00
committed by Raphael Michel
parent f2a1e11b85
commit 7bf854fe0b

View File

@@ -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