def timeline_event_stream(user_id): """Handles timeline event notifications.""" red_p.subscribe(const.CHAN_TIMELINE) while True: # {'date': 20151121, 'time': 20:24, 'day': 'Wed 14 Oct', # 'priority': 1, 'text': 'Hello', 'net' : 1, 'netname': 'Home 2'} mess = red_p.get_message() if app.config['RANDOM_TIMELINE']: if random.randint(0, 1) == 0: now = datetime.datetime.now() text = ''.join(random.choice(string.letters) for _ in range(15)) mess = {} netid = str(random.choice(list( models.get_user_network_ids(user_id)))) net = models.get_network(netid) mess['data'] = {'date': now.strftime(const.STRTIME_DATE), 'time': now.strftime(const.STRTIME_TIME), 'day': now.strftime(const.STRTIME_DAY), 'priority': const.PRIORITY_COLOUR[ random.randint(0, 3)], 'text': text, 'netid': netid, 'netname': net['name']} if mess: mess = ast.literal_eval(mess['data']) # Send it to the client yield 'data: ' + json.dumps(mess) + '\n\n' gevent.sleep(1)
def manage_key(key_id): """Generates and deletes api keys.""" if request.method == 'POST': if str(key_id) in models.get_user_network_ids(current_user.id): models.generate_api_key(key_id) return jsonify({'status': 200}) else: return jsonify({'status': 404, 'message': 'User has no such network.'}) elif request.method == 'DELETE': if str(key_id) in models.get_user_api_keys(current_user.id): models.clean_api_key(key_id) return jsonify({'status': 200}) else: return jsonify({'status': 404, 'message': 'User has no such key.'})