X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/dbd56d540e7ec9cbb22025f37c0a69278674d3bb..ab0c4f8230e6bf8d0cef08a533c76ad1b00fd119:/code/webcommon.py diff --git a/code/webcommon.py b/code/webcommon.py index e82f790..2de6524 100644 --- a/code/webcommon.py +++ b/code/webcommon.py @@ -1,28 +1,9 @@ """Exceptions for the web interface.""" import time +from invirt import database from invirt.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 - import controls def cachedproperty(func): @@ -44,9 +25,11 @@ class State(object): def getMachines(self): if self.isadmin: - return Machine.select() + return Machine.query().join('acl').filter( + database.or_(MachineAccess.user==self.username, + Machine.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())