"""Exceptions for the web interface."""
import time
-from sipb_xen_database import Machine, MachineAccess
-
-class MyException(Exception):
- """Base class for my exceptions"""
- pass
-
-class InvalidInput(MyException):
- """Exception for user-provided input is invalid but maybe in good faith.
-
- This would include setting memory to negative (which might be a
- typo) but not setting an invalid boot CD (which requires bypassing
- the select box).
- """
- def __init__(self, err_field, err_value, expl=None):
- MyException.__init__(self, expl)
- self.err_field = err_field
- self.err_value = err_value
-
-class CodeError(MyException):
- """Exception for internal errors or bad faith input."""
- pass
+from invirt import database
+from invirt.database import Machine, MachineAccess
import controls
class State(object):
"""State for a request"""
- def __init__(self, user):
+ def __init__(self, user, isadmin=False):
self.username = user
+ self.isadmin = isadmin
+
+ def getMachines(self):
+ if self.isadmin:
+ return Machine.query().all()
+ else:
+ return Machine.query().join('acl').filter_by(user=self.username)
- machines = cachedproperty(lambda self:
- Machine.query().join('acl').select_by(user=self.username))
+ machines = cachedproperty(getMachines)
xmlist_raw = cachedproperty(lambda self: controls.getList())
xmlist = cachedproperty(lambda self:
dict((m, self.xmlist_raw[m.name])