예제 #1
0
파일: chat.py 프로젝트: vipmath/congo
    def GET(self):
        get_data = web.input(last_id=0)

        last_id = int(get_data.last_id)
        room_id = web.ctx.game.player_color

        messages = []
        delete_id = None
        if last_id == 0:
            messages = ChatMessage.load(room_id, last_id)
        else:
            action, kwargs = wait_for_message(room_id)
            #sleep up to 300 ms to prevent the thundering herd
            time.sleep(random.random() * .3)
            if action == 'send':
                messages = ChatMessage.load(room_id, last_id)
            elif action == 'delete':
                delete_id = kwargs['id']

        deletable = is_admin()

        ChatRoom.set_online(room_id)
        online_users = [{
            'name': u[1],
            'rating': Pretty.rating(u[2]),
        } for u in ChatRoom.get_online(room_id)]

        return json.dumps({
            'messages':
            list(
                reversed([{
                    'id': x.id,
                    'name': x.name,
                    'rating': Pretty.rating(x.rating),
                    'message': x.message,
                    'deletable': deletable,
                } for x in messages])),
            'online_users':
            online_users,
            'refresh':
            False,
            'delete_id':
            delete_id,
        })
예제 #2
0
파일: chat.py 프로젝트: dwt/congo
    def GET(self):
        get_data = web.input(last_id=0)

        last_id = int(get_data.last_id)
        room_id = web.ctx.game.player_color

        messages = []
        delete_id = None
        if last_id == 0:
            messages = ChatMessage.load(room_id, last_id)
        else:
            action, kwargs = wait_for_message(room_id)
            #sleep up to 300 ms to prevent the thundering herd
            time.sleep(random.random() * .3)
            if action == 'send':
                messages = ChatMessage.load(room_id, last_id)
            elif action == 'delete':
                delete_id = kwargs['id']

        deletable = is_admin()

        ChatRoom.set_online(room_id)
        online_users = [{
            'name': u[1],
            'rating': Pretty.rating(u[2]),
        } for u in ChatRoom.get_online(room_id)]

        return json.dumps({
            'messages': list(reversed([
                {
                    'id': x.id,
                    'name': x.name,
                    'rating': Pretty.rating(x.rating),
                    'message': x.message,
                    'deletable': deletable,
                } for x in messages
            ])),
            'online_users': online_users,
            'refresh': False,
            'delete_id': delete_id,
        })