Update (at least some of) the web code to work with newer a SQLAlchemy
authorEvan Broder <broder@mit.edu>
Thu, 2 Oct 2008 12:18:40 +0000 (08:18 -0400)
committerEvan Broder <broder@mit.edu>
Thu, 2 Oct 2008 12:18:40 +0000 (08:18 -0400)
svn path=/trunk/packages/sipb-xen-www/; revision=1001

code/controls.py
code/main.py
code/templates/functions.tmpl
code/validation.py
code/webcommon.py

index 8a5f1ef..d20f5f0 100644 (file)
@@ -13,7 +13,7 @@ import cache_acls
 import yaml
 
 from invirt.config import structs as config
-from invirt.database import Machine, Disk, Type, NIC, CDROM, ctx, meta
+from invirt.database import Machine, Disk, Type, NIC, CDROM, session, meta
 
 # ... and stolen from xend/uuid.py
 def randomUUID():
index dd36b1b..514f74c 100755 (executable)
@@ -40,7 +40,7 @@ from webcommon import InvalidInput, CodeError, State
 import controls
 from getafsgroups import getAfsGroupMembers
 from invirt import database
-from invirt.database import Machine, CDROM, ctx, connect, MachineAccess, Type, Autoinstall
+from invirt.database import Machine, CDROM, session, connect, MachineAccess, Type, Autoinstall
 from invirt.config import structs as config
 
 def pathSplit(path):
index 9bf6cf8..3daf6ad 100644 (file)
@@ -20,14 +20,14 @@ onchange="$onchange"#slurp
 
 #def cdromList($default="", $onchange=None)
 #filter None
-$databaseList(sorted($database.CDROM.select(), key=lambda x: x.description),
+$databaseList(sorted($database.CDROM.query(), key=lambda x: x.description),
               default, onchange, 'cdrom', 'cdromlist', 'cdrom_id', 'description')
 #end filter
 #end def
 
 #def autoList($default="", $onchange=None)
 #filter None
-$databaseList(sorted($database.Autoinstall.select(), key=lambda x: x.description),
+$databaseList(sorted($database.Autoinstall.query(), key=lambda x: x.description),
               default, onchange, 'autoinstall', 'autoinstalllist', 'autoinstall_id', 'description')
 #end filter
 #end def
index f6e4a59..b0ec660 100644 (file)
@@ -78,7 +78,7 @@ def getMachinesByOwner(owner, machine=None):
     """
     if machine:
         owner = machine.owner
-    return Machine.select_by(owner=owner)
+    return Machine.query().filter_by(owner=owner)
 
 def maxMemory(owner, g, machine=None, on=True):
     """Return the maximum memory for a machine or a user.
@@ -110,14 +110,15 @@ def maxDisk(owner, machine=None):
         machine_id = machine.machine_id
     else:
         machine_id = None
-    disk_usage = Disk.query().filter_by(Disk.c.machine_id != machine_id,
-                                        owner=owner).sum(Disk.c.size) or 0
+    disk_usage = Disk.query().filter(Disk.c.machine_id != machine_id).\
+                     join('machine').\
+                     filter_by(owner=owner).sum(Disk.c.size) or 0
     return min(MAX_DISK_SINGLE, MAX_DISK_TOTAL-disk_usage/1024.)
 
 def cantAddVm(owner, g):
     machines = getMachinesByOwner(owner)
     active_machines = [m for m in machines if m.name in g.xmlist_raw]
-    if len(machines) >= MAX_VMS_TOTAL:
+    if machines.count() >= MAX_VMS_TOTAL:
         return 'You have too many VMs to create a new one.'
     if len(active_machines) >= MAX_VMS_ACTIVE:
         return ('You already have the maximum number of VMs turned on.  '
@@ -269,7 +270,7 @@ def testName(user, name, machine=None):
     name = name.lower()
     if machine is not None and name == machine.name:
         return None
-    if not Machine.select_by(name=name):
+    if not Machine.query().filter_by(name=name):
         if not validMachineName(name):
             raise InvalidInput('name', name, 'You must provide a machine name.  Max 63 chars, alnum plus \'-\', does not begin or end with \'-\'.')
         return name
index eaf533c..9052a4e 100644 (file)
@@ -45,11 +45,11 @@ class State(object):
 
     def getMachines(self):
         if self.isadmin:
-            return Machine.query().join('acl').select_by(
+            return Machine.query().join('acl').filter_by(
                 database.or_(MachineAccess.c.user == self.username,
                              Machine.c.adminable == True))
         else:
-            return Machine.query().join('acl').select_by(user=self.username)
+            return Machine.query().join('acl').filter_by(user=self.username)
 
     machines = cachedproperty(getMachines)
     xmlist_raw = cachedproperty(lambda self: controls.getList())