def get_multiple(cls, user_id, *keynames): result = dict((k, None) for k in keynames) with session() as s: flows = s.query(cls).filter(cls.user_id == user_id).filter(cls.keyname.in_(keynames)) for flow in flows: result[flow.keyname] = simplejson.loads(flow.json) return result
def get(cls, user_id, keyname): with session() as s: flow = s.query(cls).filter(cls.user_id == user_id).filter(cls.keyname == keyname).first() if flow: return simplejson.loads(flow.json) else: return None
def new(cls, email, password): email = email.lower() salt = bytes(os.urandom(SALT_LEN)) password = hashlib.sha1(salt + bytes(password)).hexdigest() with session() as s: obj = cls(email=email, password=password, salt=buffer(salt)) s.add(obj) return obj
def get_by_email_password(cls, email, password): with session() as s: user = s.query(Users).filter(Users.email == email).first() if user is None: raise NoSuchEmail hashed_pass = hashlib.sha1(bytes(user.salt) + bytes(password)).hexdigest() if hashed_pass != user.password: raise BadPassword return user
def delete(cls, user_id, keyname): with session() as s: s.query(cls).filter(cls.user_id == user_id).filter(cls.keyname == keyname).delete()