Add AdminPage abstraction on top of util.Page
authorSimo Sorce <simo@redhat.com>
Tue, 7 Oct 2014 02:48:07 +0000 (22:48 -0400)
committerPatrick Uiterwijk <puiterwijk@redhat.com>
Tue, 7 Oct 2014 14:48:31 +0000 (16:48 +0200)
This is to allow different default headers between Admin pages and
other pages.
In particular we set no-caching headers to all admin pages to force
browsers to refresh as often as possible.

Signed-off-by: Simo Sorce <simo@redhat.com>
Reviewed-by: Patrick Uiterwijk <puiterwijk@redhat.com>
ipsilon/admin/common.py
ipsilon/admin/info.py
ipsilon/admin/login.py
ipsilon/admin/providers.py
ipsilon/providers/saml2/admin.py
ipsilon/providers/saml2idp.py

index b8572e3..19ca6ff 100755 (executable)
@@ -22,7 +22,18 @@ from ipsilon.util.page import Page
 from ipsilon.util.page import admin_protect, auth_protect
 
 
-class AdminPluginPage(Page):
+class AdminPage(Page):
+
+    def __init__(self, *args, **kwargs):
+        super(AdminPage, self).__init__(*args, **kwargs)
+        self.default_headers.update({
+            'Cache-Control': 'no-cache, must-revalidate',
+            'Pragma': 'no-cache',
+            'Expires': 'Thu, 01 Dec 1994 16:00:00 GMT',
+        })
+
+
+class AdminPluginPage(AdminPage):
 
     def __init__(self, obj, site, parent):
         super(AdminPluginPage, self).__init__(site, form=True)
@@ -103,7 +114,7 @@ class AdminPluginPage(Page):
                               options=self.plugin_config)
 
 
-class Admin(Page):
+class Admin(AdminPage):
 
     def __init__(self, site, mount):
         super(Admin, self).__init__(site)
index 4a8aaba..1ce06f1 100755 (executable)
@@ -3,14 +3,14 @@
 # Copyright (C) 2014  Ipsilon Contributors see COPYING for license
 
 import cherrypy
-from ipsilon.util.page import Page
 from ipsilon.util.page import admin_protect, auth_protect
 from ipsilon.util.plugin import PluginObject
 from ipsilon.admin.common import AdminPluginPage
+from ipsilon.admin.common import AdminPage
 from ipsilon.info.common import FACILITY
 
 
-class InfoPluginsOrder(Page):
+class InfoPluginsOrder(AdminPage):
 
     def __init__(self, site, parent):
         super(InfoPluginsOrder, self).__init__(site, form=True)
@@ -84,7 +84,7 @@ class InfoPluginsOrder(Page):
                               options=opts)
 
 
-class InfoPlugins(Page):
+class InfoPlugins(AdminPage):
     def __init__(self, site, parent):
         super(InfoPlugins, self).__init__(site)
         self._master = parent
index 165b4ab..62e0a0e 100755 (executable)
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import cherrypy
-from ipsilon.util.page import Page
 from ipsilon.util.page import admin_protect, auth_protect
 from ipsilon.util.plugin import PluginObject
 from ipsilon.admin.common import AdminPluginPage
+from ipsilon.admin.common import AdminPage
 from ipsilon.login.common import FACILITY
 
 
@@ -34,7 +34,7 @@ def save_enabled_plugins(names):
     po.save_plugin_config(FACILITY)
 
 
-class LoginPluginsOrder(Page):
+class LoginPluginsOrder(AdminPage):
 
     def __init__(self, site, parent):
         super(LoginPluginsOrder, self).__init__(site, form=True)
@@ -116,7 +116,7 @@ class LoginPluginsOrder(Page):
                               options=opts)
 
 
-class LoginPlugins(Page):
+class LoginPlugins(AdminPage):
     def __init__(self, site, parent):
         super(LoginPlugins, self).__init__(site)
         self._master = parent
index 31e11ef..ce21e16 100755 (executable)
 
 
 import cherrypy
-from ipsilon.util.page import Page
 from ipsilon.util.page import admin_protect, auth_protect
 from ipsilon.providers.common import FACILITY
 from ipsilon.admin.common import AdminPluginPage
+from ipsilon.admin.common import AdminPage
 
 
-class ProviderPlugins(Page):
+class ProviderPlugins(AdminPage):
     def __init__(self, site, parent):
         super(ProviderPlugins, self).__init__(site)
         self._master = parent
index 7e14312..dae4a47 100755 (executable)
@@ -18,7 +18,7 @@
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 import cherrypy
-from ipsilon.util.page import Page
+from ipsilon.admin.common import AdminPage
 from ipsilon.providers.saml2.provider import ServiceProvider
 from ipsilon.providers.saml2.provider import ServiceProviderCreator
 from ipsilon.providers.saml2.provider import InvalidProviderId
@@ -29,7 +29,7 @@ import requests
 VALID_IN_NAME = r'[^\ a-zA-Z0-9]'
 
 
-class NewSPAdminPage(Page):
+class NewSPAdminPage(AdminPage):
 
     def __init__(self, site, parent):
         super(NewSPAdminPage, self).__init__(site, form=True)
@@ -127,7 +127,7 @@ class UnauthorizedUser(Exception):
     pass
 
 
-class SPAdminPage(Page):
+class SPAdminPage(AdminPage):
 
     def __init__(self, sp, site, parent):
         super(SPAdminPage, self).__init__(site, form=True)
@@ -277,15 +277,15 @@ class SPAdminPage(Page):
     delete.public_function = True
 
 
-class AdminPage(Page):
+class Saml2AdminPage(AdminPage):
     def __init__(self, site, config):
-        super(AdminPage, self).__init__(site)
+        super(Saml2AdminPage, self).__init__(site)
         self.name = 'admin'
         self.cfg = config
         self.providers = []
         self.menu = []
         self.url = None
-        self.sp = Page(self._site)
+        self.sp = AdminPage(self._site)
 
     def add_sp(self, name, sp):
         page = SPAdminPage(sp, self._site, self)
index e30e4a1..7508760 100755 (executable)
@@ -20,7 +20,7 @@
 from ipsilon.providers.common import ProviderBase, ProviderPageBase
 from ipsilon.providers.common import FACILITY
 from ipsilon.providers.saml2.auth import AuthenticateRequest
-from ipsilon.providers.saml2.admin import AdminPage
+from ipsilon.providers.saml2.admin import Saml2AdminPage
 from ipsilon.providers.saml2.provider import IdentityProvider
 from ipsilon.tools.certs import Certificate
 from ipsilon.tools import saml2metadata as metadata
@@ -214,7 +214,7 @@ Provides SAML 2.0 authentication infrastructure. """
     def get_tree(self, site):
         self.idp = self.init_idp()
         self.page = SAML2(site, self)
-        self.admin = AdminPage(site, self)
+        self.admin = Saml2AdminPage(site, self)
         return self.page
 
     def init_idp(self):