X-Git-Url: http://xvm.mit.edu/gitweb/invirt/packages/invirt-web.git/blobdiff_plain/251a74f2ce55741ee63f8d5b6c732f5631912b79..b6ac16dfe45437378c5683777e4e20283219803a:/code/webcommon.py diff --git a/code/webcommon.py b/code/webcommon.py index ee9bb73..9a9453a 100644 --- a/code/webcommon.py +++ b/code/webcommon.py @@ -36,20 +36,21 @@ def cachedproperty(func): return value return property(getter) -class Global(object): - """Global state of the system, to avoid duplicate remctls to get state""" +class State(object): + """State for a request""" def __init__(self, user): - self.user = user + self.username = user machines = cachedproperty(lambda self: - Machine.query().join('acl').select_by(user=self.user)) + Machine.query().join('acl').select_by(user=self.username)) + xmlist_raw = cachedproperty(lambda self: controls.getList()) xmlist = cachedproperty(lambda self: - controls.getList(self.machines)) + dict((m, self.xmlist_raw[m.name]) + for m in self.machines + if m.name in self.xmlist_raw)) def clear(self): """Clear the state so future accesses reload it.""" for attr in list(self.__dict__): if attr.startswith('__cache_'): delattr(self, attr) - -g = Global(None)