Index: /package_branches/invirt-web/cherrypy-rebased/code/main.py =================================================================== --- /package_branches/invirt-web/cherrypy-rebased/code/main.py (revision 2689) +++ /package_branches/invirt-web/cherrypy-rebased/code/main.py (revision 2690) @@ -56,4 +56,13 @@ 'from invirt import database'] + def __getattr__(self, name): + if name in ("admin", "overlord"): + if not cherrypy.request.login in getAfsGroupMembers(config.adminacl, config.authz[0].cell): + raise InvalidInput('username', cherrypy.request.login, + 'Not in admin group %s.' % config.adminacl) + cherrypy.request.state = State(cherrypy.request.login, isadmin=True) + return self + else: + return super(InvirtWeb, self).__getattr__(name) @cherrypy.expose @@ -646,21 +655,7 @@ 'hostname' : socket.getfqdn()}]) -def admin(username, state, path, fields): - if path == '': - return ({'Status': '303 See Other', - 'Location': 'admin/'}, - "You shouldn't see this message.") - if not username in getAfsGroupMembers(config.adminacl, 'athena.mit.edu'): - raise InvalidInput('username', username, - 'Not in admin group %s.' % config.adminacl) - newstate = State(username, isadmin=True) - newstate.environ = state.environ - return handler(username, newstate, path, fields) - mapping = dict( modify=modify, - unauth=unauthFront, - admin=admin, - overlord=admin) + unauth=unauthFront) def printHeaders(headers): Index: /package_branches/invirt-web/cherrypy-rebased/code/templates/skeleton.mako =================================================================== --- /package_branches/invirt-web/cherrypy-rebased/code/templates/skeleton.mako (revision 2689) +++ /package_branches/invirt-web/cherrypy-rebased/code/templates/skeleton.mako (revision 2690) @@ -6,9 +6,9 @@