Connect to the database on init
[invirt/packages/invirt-web.git] / code / main.py
index 5de5f9a..5c30714 100755 (executable)
@@ -13,8 +13,8 @@ import sys
 import time
 import urllib
 import socket
 import time
 import urllib
 import socket
+import cherrypy
 from StringIO import StringIO
 from StringIO import StringIO
-
 def revertStandardError():
     """Move stderr to stdout, and return the contents of the old stderr."""
     errio = sys.stderr
 def revertStandardError():
     """Move stderr to stdout, and return the contents of the old stderr."""
     errio = sys.stderr
@@ -45,6 +45,17 @@ from invirt.database import Machine, CDROM, session, connect, MachineAccess, Typ
 from invirt.config import structs as config
 from invirt.common import InvalidInput, CodeError
 
 from invirt.config import structs as config
 from invirt.common import InvalidInput, CodeError
 
+from view import View
+
+class InvirtWeb(View):
+    def __init__(self):
+        super(self.__class__,self).__init__()
+        connect()
+
+    @cherrypy.expose
+    def helloworld(self):
+        return "Hello world!"
+
 def pathSplit(path):
     if path.startswith('/'):
         path = path[1:]
 def pathSplit(path):
     if path.startswith('/'):
         path = path[1:]
@@ -151,7 +162,7 @@ def parseCreate(username, state, fields):
     kws = dict([(kw, fields.getfirst(kw)) for kw in 'name description owner memory disksize vmtype cdrom autoinstall'.split()])
     validate = validation.Validate(username, state, strict=True, **kws)
     return dict(contact=username, name=validate.name, description=validate.description, memory=validate.memory,
     kws = dict([(kw, fields.getfirst(kw)) for kw in 'name description owner memory disksize vmtype cdrom autoinstall'.split()])
     validate = validation.Validate(username, state, strict=True, **kws)
     return dict(contact=username, name=validate.name, description=validate.description, memory=validate.memory,
-                disksize=validate.disksize, owner=validate.owner, machine_type=validate.vmtype,
+                disksize=validate.disksize, owner=validate.owner, machine_type=getattr(validate, 'vmtype', Defaults.type),
                 cdrom=getattr(validate, 'cdrom', None),
                 autoinstall=getattr(validate, 'autoinstall', None))
 
                 cdrom=getattr(validate, 'cdrom', None),
                 autoinstall=getattr(validate, 'autoinstall', None))
 
@@ -615,9 +626,9 @@ def admin(username, state, path, fields):
         return ({'Status': '303 See Other',
                  'Location': 'admin/'},
                 "You shouldn't see this message.")
         return ({'Status': '303 See Other',
                  'Location': 'admin/'},
                 "You shouldn't see this message.")
-    if not username in getAfsGroupMembers(config.web.adminacl, 'athena.mit.edu'):
+    if not username in getAfsGroupMembers(config.adminacl, 'athena.mit.edu'):
         raise InvalidInput('username', username,
         raise InvalidInput('username', username,
-                           'Not in admin group %s.' % config.web.adminacl)
+                           'Not in admin group %s.' % config.adminacl)
     newstate = State(username, isadmin=True)
     newstate.environ = state.environ
     return handler(username, newstate, path, fields)
     newstate = State(username, isadmin=True)
     newstate.environ = state.environ
     return handler(username, newstate, path, fields)