using mako-render instead of mako; fixed a typo in svn.mako
[invirt/packages/invirt-web.git] / code / main.py
index 8506ee5..78ca14f 100755 (executable)
@@ -39,8 +39,8 @@ import cache_acls
 from webcommon import InvalidInput, CodeError, State
 import controls
 from getafsgroups import getAfsGroupMembers
-import sipb_xen_database as database
-from sipb_xen_database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall
+from invirt import database
+from invirt.database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall
 from invirt.config import structs as config
 
 def pathSplit(path):
@@ -85,6 +85,7 @@ def makeErrorPre(old, addition):
         return '<p>STDERR:</p><pre>' + str(addition) + '</pre>'
 
 Template.database = database
+Template.config = config
 Template.helppopup = staticmethod(helppopup)
 Template.err = None
 
@@ -594,14 +595,15 @@ def unauthFront(_, _2, _3, fields):
     """Information for unauth'd users."""
     return templates.unauth(searchList=[{'simple' : True}])
 
-def overlord(username, state, path, fields):
+def admin(username, state, path, fields):
     if path == '':
         return ({'Status': '303 See Other',
-                 'Location': 'overlord/'},
+                 'Location': 'admin/'},
                 "You shouldn't see this message.")
-    if not username in getAfsGroupMembers('system:xvm', 'athena.mit.edu'):
-        raise InvalidInput('username', username, 'Not an overlord.')
-    newstate = State(username, overlord=True)
+    if not username in getAfsGroupMembers(config.web.adminacl, 'athena.mit.edu'):
+        raise InvalidInput('username', username,
+                           'Not in admin group %s.' % config.web.adminacl)
+    newstate = State(username, isadmin=True)
     newstate.environ = state.environ
     return handler(username, newstate, path, fields)
 
@@ -617,7 +619,8 @@ mapping = dict(list=listVms,
                create=create,
                help=helpHandler,
                unauth=unauthFront,
-               overlord=overlord,
+               admin=admin,
+               overlord=admin,
                errortest=throwError)
 
 def printHeaders(headers):
@@ -646,7 +649,7 @@ def show_error(op, username, fields, err, emsg, traceback):
     d = dict(op=op, user=username, fields=fields,
              errorMessage=str(err), stderr=emsg, traceback=traceback)
     details = templates.error_raw(searchList=[d])
-    if username not in ('price', 'ecprice', 'andersk'): #add yourself at will
+    if username not in config.web.errormail_exclude:
         send_error_mail('xvm error on %s for %s: %s' % (op, username, err),
                         details)
     d['details'] = details