def load(email): u_db = redis.hgetall(User.KEY_STRING % email) if len(u_db): u_db['roles'] = redis.smembers(User.ROLES_KEY % email) u = User(**u_db) u._is_new = False u._email = email u._password = u_db.get('password') return u else: return None
def find_by_timestamp(start, end, sort_len = False, page = 0, min_len = 0, channel = -1): if(page > 0): start_limit = app.config['RECORDS_PER_PAGE'] * (page - 1) else: start_limit = 0 #Search key : recording:tmp:search:<ch_id>:<min_len>:<start>:<end> search_key = "recording:tmp:search:%s:%s:%s:%s" % (int(channel), int(min_len), int(start), int(end)) if not redis.exists(search_key): recordings = redis.zrangebyscore(Recording.TIMESTAMPS_KEY, start, end) #filter recordings by lenght and channel_id if(min_len > 0 or channel >= 0): recordings_filtered = [] for r_id in recordings: recording = Recording.load(r_id) if(min_len > recording.duration): continue; if(channel >= 0 and channel != recording.channel_id): continue; recordings_filtered.append(r_id) recordings = recordings_filtered pipe = redis.pipeline() map(lambda r: pipe.sadd(search_key, r), recordings) pipe.execute() #Set expiration time redis.expire(search_key, 3600); if(sort_len): #Return all records recordings = redis.sort(search_key, None, None, "recording:*->duration", None, True) else: recordings = redis.smembers(search_key) lenght = len(recordings) if(page > 0): recordings = recordings[start_limit : start_limit + app.config['RECORDS_PER_PAGE']] return (map(lambda r_id: Recording.load(r_id), recordings), lenght)
def all(load = True): if load: return map(lambda name: Role.load(name), Role.all(False)) else: return redis.smembers(Role.INDEX_KEY)
def all(load = True): if load: return map(lambda cid: Card.load(cid), Card.all(False)) else: return redis.smembers(Card.INDEX_KEY)
def all(load = True): if load: return map(lambda email: User.load(email), User.all(False)) else: return redis.smembers(User.INDEX_KEY)