forked from CGM_Public/pretix_original
Add uninstall-handler for plugins
This commit is contained in:
committed by
Raphael Michel
parent
f2a1e11b85
commit
7bf854fe0b
@@ -1118,15 +1118,18 @@ class Event(EventMixin, LoggedModel):
|
|||||||
self.items.all().delete()
|
self.items.all().delete()
|
||||||
self.subevents.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
|
from pretix.base.plugins import get_all_plugins
|
||||||
|
|
||||||
plugins_active = self.get_plugins()
|
return {
|
||||||
plugins_available = {
|
|
||||||
p.module: p for p in get_all_plugins(self)
|
p.module: p for p in get_all_plugins(self)
|
||||||
if not p.name.startswith('.') and getattr(p, 'visible', True)
|
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]
|
enable = [m for m in modules if m not in plugins_active and m in plugins_available]
|
||||||
|
|
||||||
for module in enable:
|
for module in enable:
|
||||||
@@ -1155,6 +1158,10 @@ class Event(EventMixin, LoggedModel):
|
|||||||
plugins_active.remove(module)
|
plugins_active.remove(module)
|
||||||
self.set_active_plugins(plugins_active)
|
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,))
|
regenerate_css.apply_async(args=(self.pk,))
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
|||||||
Reference in New Issue
Block a user