diff options
Diffstat (limited to 'ipsilon/admin/common.py')
-rw-r--r-- | ipsilon/admin/common.py | 28 |
1 files changed, 20 insertions, 8 deletions
diff --git a/ipsilon/admin/common.py b/ipsilon/admin/common.py index 7484806..2364df7 100644 --- a/ipsilon/admin/common.py +++ b/ipsilon/admin/common.py @@ -273,30 +273,42 @@ class AdminPlugins(AdminPage): @admin_protect def enable(self, plugin): msg = None + status = ADMIN_STATUS_OK try: obj = self._get_plugin_obj(plugin) except AdminError, e: return self.root_with_msg(str(e), ADMIN_STATUS_WARN) if not obj.is_enabled: - obj.enable() - obj.save_enabled_state() - msg = "Plugin %s enabled" % obj.name - return self.root_with_msg(msg, ADMIN_STATUS_OK, + try: + obj.enable() + obj.save_enabled_state() + except AdminError as e: + msg = str(e) + status = ADMIN_STATUS_WARN + else: + msg = "Plugin %s enabled" % obj.name + return self.root_with_msg(msg, status, changed={obj.name: 'enabled'}) enable.public_function = True @admin_protect def disable(self, plugin): msg = None + status = ADMIN_STATUS_OK try: obj = self._get_plugin_obj(plugin) except AdminError, e: return self.root_with_msg(str(e), ADMIN_STATUS_WARN) if obj.is_enabled: - obj.disable() - obj.save_enabled_state() - msg = "Plugin %s disabled" % obj.name - return self.root_with_msg(msg, ADMIN_STATUS_OK, + try: + obj.disable() + obj.save_enabled_state() + except AdminError as e: + msg = str(e) + status = ADMIN_STATUS_WARN + else: + msg = "Plugin %s disabled" % obj.name + return self.root_with_msg(msg, status, changed={obj.name: 'disabled'}) disable.public_function = True |