X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Fadmin%2Fcommon.py;h=18b71ab5f85ae799c5aad61350e0d284e6ad22f5;hp=6e36669d5c602bb94e2a1bf493a04b5281008a18;hb=dbcead832f700ad63dc382648f0e3b1b84cd4d23;hpb=d64cd70ae413f5a936806a182e4377a887d4d782 diff --git a/ipsilon/admin/common.py b/ipsilon/admin/common.py index 6e36669..18b71ab 100755 --- a/ipsilon/admin/common.py +++ b/ipsilon/admin/common.py @@ -17,30 +17,21 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +import cherrypy from ipsilon.util.data import Store from ipsilon.util.page import Page -from ipsilon.util.user import UserSession -import cherrypy -from ipsilon.login.common import FACILITY as LOGIN_FACILITY - - -def admin_protect(fn): - - def check(*args, **kwargs): - if UserSession().get_user().is_admin: - return fn(*args, **kwargs) - - raise cherrypy.HTTPError(403) +from ipsilon.util.page import admin_protect - return check +class AdminPluginPage(Page): -class LoginPluginPage(Page): - - def __init__(self, obj, site, baseurl): - super(LoginPluginPage, self).__init__(site) + def __init__(self, obj, site, parent): + super(AdminPluginPage, self).__init__(site) self._obj = obj - self.url = '%s/%s' % (baseurl, obj.name) + self.title = '%s plugin' % obj.name + self.url = '%s/%s' % (parent.url, obj.name) + self.facility = parent.facility + self.menu = [parent] # Get the defaults self.plugin_config = obj.get_config_desc() @@ -53,10 +44,10 @@ class LoginPluginPage(Page): @admin_protect def GET(self, *args, **kwargs): - return self._template('admin/login_plugin.html', - title='%s plugin' % self._obj.name, - name='admin_login_%s_form' % self._obj.name, - action=self.url, + return self._template('admin/plugin_config.html', title=self.title, + name='admin_%s_%s_form' % (self.facility, + self._obj.name), + menu=self.menu, action=self.url, options=self.plugin_config) @admin_protect @@ -77,7 +68,7 @@ class LoginPluginPage(Page): # First we try to save in the database try: store = Store() - store.save_plugin_config(LOGIN_FACILITY, + store.save_plugin_config(self.facility, self._obj.name, new_values) message = "New configuration saved." message_type = "success" @@ -90,12 +81,12 @@ class LoginPluginPage(Page): self._obj.set_config_value(name, value) self.plugin_config[name][2] = value - return self._template('admin/login_plugin.html', + return self._template('admin/plugin_config.html', title=self.title, message=message, message_type=message_type, - title='%s plugin' % self._obj.name, - name='admin_login_%s_form' % self._obj.name, - action=self.url, + name='admin_%s_%s_form' % (self.facility, + self._obj.name), + menu=self.menu, action=self.url, options=self.plugin_config) def root(self, *args, **kwargs): @@ -105,26 +96,22 @@ class LoginPluginPage(Page): return op(*args, **kwargs) -class LoginPlugins(Page): - def __init__(self, site, baseurl): - super(LoginPlugins, self).__init__(site) - self.url = '%s/login' % baseurl - - for plugin in self._site[LOGIN_FACILITY]['available']: - cherrypy.log.error('Admin login plugin: %s' % plugin) - obj = self._site[LOGIN_FACILITY]['available'][plugin] - self.__dict__[plugin] = LoginPluginPage(obj, self._site, self.url) - - class Admin(Page): - def __init__(self, *args, **kwargs): - super(Admin, self).__init__(*args, **kwargs) - self.url = '%s/admin' % self.basepath - self.login = LoginPlugins(self._site, self.url) + def __init__(self, site, mount): + super(Admin, self).__init__(site) + self.url = '%s/%s' % (self.basepath, mount) + self.menu = [] def root(self, *args, **kwargs): - login_plugins = self._site[LOGIN_FACILITY] - return self._template('admin/index.html', title='Administration', - available=login_plugins['available'], - enabled=login_plugins['enabled']) + return self._template('admin/index.html', + title='Configuration', + menu=self.menu) + + def add_subtree(self, name, page): + self.__dict__[name] = page + self.menu.append(page) + + def del_subtree(self, name): + self.menu.remove(self.__dict__[name]) + del self.__dict__[name]