projects
/
invirt/packages/invirt-web.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix a SQLAlchemy bug in the web ACL caching code
[invirt/packages/invirt-web.git]
/
code
/
webcommon.py
diff --git
a/code/webcommon.py
b/code/webcommon.py
index
ce0ddc7
..
9052a4e
100644
(file)
--- a/
code/webcommon.py
+++ b/
code/webcommon.py
@@
-1,7
+1,8
@@
"""Exceptions for the web interface."""
import time
"""Exceptions for the web interface."""
import time
-from sipb_xen_database import Machine, MachineAccess
+from invirt import database
+from invirt.database import Machine, MachineAccess
class MyException(Exception):
"""Base class for my exceptions"""
class MyException(Exception):
"""Base class for my exceptions"""
@@
-38,15
+39,17
@@
def cachedproperty(func):
class State(object):
"""State for a request"""
class State(object):
"""State for a request"""
- def __init__(self, user, overlord=False):
+ def __init__(self, user, isadmin=False):
self.username = user
self.username = user
- self.overlord = overlord
+ self.isadmin = isadmin
def getMachines(self):
def getMachines(self):
- if self.overlord:
- return Machine.select()
+ if self.isadmin:
+ return Machine.query().join('acl').filter_by(
+ database.or_(MachineAccess.c.user == self.username,
+ Machine.c.adminable == True))
else:
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())
machines = cachedproperty(getMachines)
xmlist_raw = cachedproperty(lambda self: controls.getList())