Add list method, require authentication for it, and add a hello world via mako
authorQuentin Smith <quentin@mit.edu>
Sun, 9 Aug 2009 22:45:23 +0000 (18:45 -0400)
committerQuentin Smith <quentin@mit.edu>
Sun, 9 Aug 2009 22:45:23 +0000 (18:45 -0400)
svn path=/package_branches/invirt-web/cherrypy-rebased/; revision=2665

code/main.py
code/view.py

index 5c30714..0a9342a 100755 (executable)
@@ -51,10 +51,24 @@ class InvirtWeb(View):
     def __init__(self):
         super(self.__class__,self).__init__()
         connect()
+        self._cp_config['tools.require_login.on'] = True
 
     @cherrypy.expose
+    @cherrypy.tools.mako(filename="/list.mako")
+    def list(self, username):
+        """Handler for list requests."""
+        checkpoint.checkpoint('Getting list dict')
+        d = getListDict(username, state)
+        checkpoint.checkpoint('Got list dict')
+        return templates.list(searchList=[d])
+    index=list
+
+    @cherrypy.expose
+    @cherrypy.tools.mako(filename="/helloworld.mako")
     def helloworld(self):
-        return "Hello world!"
+        return {}
+        return "Hello world!\nYour request: "+repr(dir(cherrypy.request))
+    helloworld._cp_config['tools.require_login.on'] = False
 
 def pathSplit(path):
     if path.startswith('/'):
@@ -228,13 +242,6 @@ def getListDict(username, state):
              can_clone=can_clone)
     return d
 
-def listVms(username, state, path, fields):
-    """Handler for list requests."""
-    checkpoint.checkpoint('Getting list dict')
-    d = getListDict(username, state)
-    checkpoint.checkpoint('Got list dict')
-    return templates.list(searchList=[d])
-
 def vnc(username, state, path, fields):
     """VNC applet page.
 
@@ -637,7 +644,7 @@ def throwError(_, __, ___, ____):
     """Throw an error, to test the error-tracing mechanisms."""
     raise RuntimeError("test of the emergency broadcast system")
 
-mapping = dict(list=listVms,
+mapping = dict(#list=listVms,
                vnc=vnc,
                command=command,
                modify=modify,
index a375a9e..38569ed 100644 (file)
@@ -67,5 +67,16 @@ def jsonify_tool_callback(*args, **kwargs):
 
 cherrypy.tools.jsonify = cherrypy.Tool('before_finalize', jsonify_tool_callback, priority=30)
 
+def external_remote_user_login():
+    pass
+
+def require_login():
+    """If the user isn't logged in, raise 403 with an error."""
+    if cherrypy.request.login is False:
+        raise cherrypy.HTTPError(403,
+            "You are not authorized to access that resource")
+
+cherrypy.tools.require_login = cherrypy.Tool('on_start_resource', require_login)
+
 class View(object):
     _cp_config = {'tools.mako.directories': [os.path.join(os.path.dirname(__file__),'templates')]}