From b2390b8ff4ce8d21987c253b27c4547ccb4c0da5 Mon Sep 17 00:00:00 2001 From: Damien Churchill Date: Wed, 16 Sep 2009 08:42:39 +0000 Subject: [PATCH] have the plugin manager remove the scripts and directories from the server when a plugin is disabled --- deluge/ui/web/pluginmanager.py | 17 +++++++++++++++++ deluge/ui/web/server.py | 4 ++++ 2 files changed, 21 insertions(+) diff --git a/deluge/ui/web/pluginmanager.py b/deluge/ui/web/pluginmanager.py index 8a9007173..455964991 100644 --- a/deluge/ui/web/pluginmanager.py +++ b/deluge/ui/web/pluginmanager.py @@ -86,7 +86,24 @@ class PluginManager(PluginManagerBase, component.Component): log.info("Plugin has no web ui") return + info = gather_info(plugin) + server = component.get("DelugeWeb").top_level + js = component.get("Javascript") + for directory in info["script_directories"]: + js.removeDirectory(directory, name.lower()) + + for script in info["scripts"]: + script = "/js/%s/%s" % (name.lower(), os.path.basename(script)) + if script not in server.scripts: + continue + server.scripts.remove(script) + + for script in info["debug_scripts"]: + script = "/js/%s/%s" % (name.lower(), os.path.basename(script)) + if script not in server.debug_scripts: + continue + server.debug_scripts.remove(script) super(PluginManager, self).disable_plugin(name) diff --git a/deluge/ui/web/server.py b/deluge/ui/web/server.py index 99cc05149..6602e148d 100644 --- a/deluge/ui/web/server.py +++ b/deluge/ui/web/server.py @@ -255,6 +255,10 @@ class LookupResource(resource.Resource, component.Component): paths = self.__paths.get(path, []) paths.append(directory) self.__paths[path] = paths + + def removeDirectory(self, directory, path=""): + log.debug("Removing directory `%s`", directory) + self.__paths[path].remove(directory) def getChild(self, path, request): if hasattr(request, 'lookup_path'):