class Room: def __init__(self, s, b = True): self.s = s self.group = IntegerGroupQ() if b and not self.s.get('p') is None and not self.s.get('q') is None: self.p = self.group.deserialize(fromBase64(self.s['p'])) self.q = self.group.deserialize(fromBase64(self.s['q'])) self.group.setparam(self.p, self.q) def state(self, s): self.set('state', s) self.save() def check(self, v): try: return self.get('state') == v except: print(v, self.s.get('state')) return False def get(self, n, f = None): if f is None: f = lambda x: self.group.deserialize(x) if type(x) == bytes else x return map( f, fromBase64(self.s.get(n)) ) def set(self, n, v, f = None): if f is None: f = lambda x: self.group.serialize(x) if type(x) == integer else x self.s[n] = toBase64( map(f, v) ) def save(self): self.s.save() def clear(self): self.s.clear() self.s.save()