Update Copyright header point to COPYING file
[cascardo/ipsilon.git] / ipsilon / root.py
1 # Copyright (C) 2013 Ipsilon project Contributors, for license see COPYING
2
3 from ipsilon.util.page import Page
4 from ipsilon.util import errors
5 from ipsilon.login.common import Login
6 from ipsilon.login.common import Logout
7 from ipsilon.admin.common import Admin
8 from ipsilon.providers.common import LoadProviders
9 from ipsilon.admin.loginstack import LoginStack
10 from ipsilon.admin.info import InfoPlugins
11 from ipsilon.admin.login import LoginPlugins
12 from ipsilon.admin.providers import ProviderPlugins
13 from ipsilon.rest.common import Rest
14 from ipsilon.rest.providers import RestProviderPlugins
15 import cherrypy
16
17 sites = dict()
18
19
20 class Root(Page):
21
22     def __init__(self, site, template_env):
23         if site not in sites:
24             sites[site] = dict()
25         if template_env:
26             sites[site]['template_env'] = template_env
27         super(Root, self).__init__(sites[site])
28         self.html_heads = dict()
29
30         # set up error pages
31         cherrypy.config['error_page.400'] = errors.Error_400(self._site)
32         cherrypy.config['error_page.401'] = errors.Error_401(self._site)
33         cherrypy.config['error_page.404'] = errors.Error_404(self._site)
34         cherrypy.config['error_page.500'] = errors.Errors(self._site)
35
36         # now set up the default login plugins
37         self.login = Login(self._site)
38         self.logout = Logout(self._site)
39
40         # set up idp providers now
41         LoadProviders(self, self._site)
42
43         # after all plugins are setup we can instantiate the admin pages
44         self.admin = Admin(self._site, 'admin')
45         self.rest = Rest(self._site, 'rest')
46         self.stack = LoginStack(self._site, self.admin)
47         LoginPlugins(self._site, self.stack)
48         InfoPlugins(self._site, self.stack)
49         ProviderPlugins(self._site, self.admin)
50         RestProviderPlugins(self._site, self.rest)
51
52     def root(self):
53         self.debug(self.html_heads)
54         return self._template('index.html', title='Ipsilon',
55                               heads=self.html_heads)