예제 #1
0
파일: routes.py 프로젝트: rbarrette/dino
def stream_history():
    form = request.get_json()
    user_uuid = form['user']
    room_uuid = form['room']
    from_time = form['from']
    to_time = form['to']

    try:
        msgs, real_from_time, real_to_time = storage_manager.find_history(
            room_uuid, user_uuid, from_time, to_time)
    except Exception as e:
        logger.error('Could not get messages: %s' % str(e))
        logger.exception(traceback.format_exc())
        return api_response(400, message='Could not get message: %s' % str(e))

    def generate_messages():
        batch = list()
        n_messages = len(msgs)
        n_batch = 0
        batch_size = 100

        user_name = get_user_name(user_uuid)
        room_name = get_room_name(room_uuid)

        for message in msgs:
            try:
                json_body = message['body']
                json_body = json.loads(json_body)
                json_body = json_body.get('text')
                message['body'] = json_body
            except Exception:
                pass  # ignore, use original

            batch.append(message)
            if len(batch) >= batch_size:
                yield api_response(
                    200, {
                        'batch': n_batch,
                        'total_batches': int(n_messages / batch_size),
                        'message': batch,
                        'real_from_time': real_from_time,
                        'real_to_time': real_to_time,
                        'username': user_name,
                        'room': room_name,
                    })
                n_batch += 1
                batch.clear()

    return Response(generate_messages(), mimetype='application/json')
예제 #2
0
파일: routes.py 프로젝트: Xlzman/dino
def search_history():
    form = SearchHistoryForm(request.form)
    user_id = form.user_id.data
    room_id = form.room_id.data
    from_time = form.from_time.data
    to_time = form.to_time.data

    try:
        msgs = storage_manager.find_history(room_id, user_id, from_time,
                                            to_time)
    except Exception as e:
        logger.error('could not get messages: %s' % str(e))
        logger.exception(traceback.format_exc())
        msgs = list()

    return render_template('history.html', form=form, messages=msgs)
예제 #3
0
파일: routes.py 프로젝트: rbarrette/dino
def search_history():
    form = request.get_json()
    user_uuid = form['user']
    room_uuid = form['room']
    from_time = form['from']
    to_time = form['to']

    user_name = get_user_name(user_uuid)
    room_name = get_room_name(room_uuid)

    try:
        msgs, real_from_time, real_to_time = storage_manager.find_history(
            room_uuid, user_uuid, from_time, to_time)
    except Exception as e:
        logger.error('Could not get messages: %s' % str(e))
        logger.exception(traceback.format_exc())
        return api_response(400, message='Could not get message: %s' % str(e))

    try:
        clean_msgs = list()
        for message in msgs:
            try:
                json_body = message['body']
                json_body = json.loads(json_body)
                json_body = json_body.get('text')
                message['body'] = json_body
            except Exception:
                pass  # ignore, use original
            clean_msgs.append(message)
    except Exception as e:
        logger.error('Could not clean messages, will use original: %s' %
                     str(e))
        clean_msgs = msgs

    return api_response(
        200, {
            'message': clean_msgs,
            'real_from_time': real_from_time,
            'real_to_time': real_to_time,
            'username': user_name,
            'room': room_name,
        })
예제 #4
0
 def do_get_with_params(self, room_id, user_id, from_time, to_time):
     msgs, from_time, to_time = storage_manager.find_history(room_id, user_id, from_time, to_time)
     return msgs