blob: 07a1d3c40587d5366681dee264839145f0d1e17f [file] [log] [blame]
"""
LLVM-Lab Data Management
"""
from llvmlab import util
from llvmlab import machine, user
class Data(util.simple_repr_mixin):
@staticmethod
def fromdata(data):
version = data['version']
if version != 0:
raise ValueError, "Unknown version"
users = [user.User.fromdata(u)
for u in data['users']]
machines = [machine.Machine.fromdata(u)
for u in data['machines']]
return Data(users, machines)
def todata(self):
return { 'version' : 0,
'users' : [item.todata()
for item in self.users.values()
if item is not self.admin_user],
'machines' : [item.todata()
for item in self.machines.values()] }
def __init__(self, users, machines):
self.machines = dict((item.id, item) for item in machines)
self.users = dict((item.id, item) for item in users)
self.admin_user = None
def set_admin_user(self, user):
if user.id in self.users:
raise ValueError, "database contains admin user %r" % user.id
self.admin_user = user
self.users[user.id] = user