X-Git-Url: http://git.cascardo.info/?p=cascardo%2Fipsilon.git;a=blobdiff_plain;f=ipsilon%2Froot.py;h=261cdb1851ac7cd0cde00d56f9b839b3ef42c6ed;hp=a3526416333115a7b2cdd20bbfb26c0355f30a30;hb=d71af443d0178aeded3a6e65921292819f9f3b5b;hpb=84dcd4573e24b2a8901cecbe4ae15967564861e9 diff --git a/ipsilon/root.py b/ipsilon/root.py old mode 100755 new mode 100644 index a352641..261cdb1 --- a/ipsilon/root.py +++ b/ipsilon/root.py @@ -1,5 +1,3 @@ -#!/usr/bin/python -# # Copyright (C) 2013 Simo Sorce # # see file 'COPYING' for use and warranty information @@ -17,10 +15,50 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -from util import page +from ipsilon.util.page import Page +from ipsilon.util import errors +from ipsilon.login.common import Login +from ipsilon.login.common import Logout +from ipsilon.admin.common import Admin +from ipsilon.providers.common import LoadProviders +from ipsilon.admin.info import InfoPlugins +from ipsilon.admin.login import LoginPlugins +from ipsilon.admin.providers import ProviderPlugins import cherrypy -class Root(page.Page): +sites = dict() + + +class Root(Page): + + def __init__(self, site, template_env): + if site not in sites: + sites[site] = dict() + if template_env: + sites[site]['template_env'] = template_env + super(Root, self).__init__(sites[site]) + self.html_heads = dict() + + # set up error pages + cherrypy.config['error_page.400'] = errors.Error_400(self._site) + cherrypy.config['error_page.401'] = errors.Error_401(self._site) + cherrypy.config['error_page.404'] = errors.Error_404(self._site) + cherrypy.config['error_page.500'] = errors.Errors(self._site) + + # now set up the default login plugins + self.login = Login(self._site) + self.logout = Logout(self._site) + + # set up idp providers now + LoadProviders(self, self._site) + + # after all plugins are setup we can instantiate the admin pages + self.admin = Admin(self._site, 'admin') + InfoPlugins(self._site, self.admin) + LoginPlugins(self._site, self.admin) + ProviderPlugins(self._site, self.admin) def root(self): - return self._template('index.html', title='Root') + self.debug(self.html_heads) + return self._template('index.html', title='Ipsilon', + heads=self.html_heads)