summaryrefslogtreecommitdiffstats
path: root/ipsilon/admin/common.py
diff options
context:
space:
mode:
Diffstat (limited to 'ipsilon/admin/common.py')
-rw-r--r--ipsilon/admin/common.py28
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