Beispiel #1
0
def create_room():
    name = request.form['name']
    password = request.form['pass']
    room = Room.query.filter_by(name=name).first()
    if room is None and not redis.sismember("room", name):
        new_room = Room(name=name, password=password)
        new_room.set_leader(current_user.nickname)
        db.session.add(new_room)
        db.session.commit()
        # add room name to the name of room in redis set
        redis.sadd("room", name)
        room = Room.query.filter_by(name=name).first()
        room.users.append(current_user)
        db.session.commit()
        redis.zadd(name + "_score", {current_user.nickname: 0})
        redis.hset(room.name, current_user.nickname, 0)
        return jsonify(result="success",
                       type="create",
                       data={
                           "room": new_room.name,
                           "room_url": url_for('chat.room', rn=room.name)
                       })
        # return redirect(url_for('chat.join_room', rn=new_room.name))
    return jsonify(
        result="fail",
        type="create",
        message='Sorry, the name is alreay existed, please change another.')
Beispiel #2
0
def cancel(message):
    room = message['room']
    redis.hset(room, current_user.nickname, 0)
    emit('my_response', {
        'type': 'cancel',
        'data': 'is not ready',
        'user': current_user.nickname
    },
         room=message['room'])
Beispiel #3
0
def ready(message):
    room = message['room']
    redis.hset(room, current_user.nickname, 1)
    emit('my_response', {
        'type': 'ready',
        'data': 'is ready',
        'user': current_user.nickname
    },
         room=message['room'])
Beispiel #4
0
def get_topic(rn):
    room = Room.query.filter_by(name=rn).first()
    if current_user.nickname == room.leader:
        word = Word.query.get(random.randint(1, Word.query.count()))
        print(word)
        redis.hset("roomstatus", room.name, 1)
        redis.hset("topic", room.name, word.name)
        print("get topic:", word.name)
        return jsonify(result="success", topic=word.name, room=room.name)
    return jsonify(result="fail", topic=None, room=room.name)
Beispiel #5
0
def stopDraw(message):
    room = message['room']
    r = Room.query.filter_by(name=room).first()
    redis.hset("roomstatus", room, 0)
    emit('my_response', {
        'type': 'endRound',
        'data': message['data'],
        'rightman': message['user'],
        'leader': r.leader
    },
         room=message['room'])
Beispiel #6
0
def join_room(rn):
    room = Room.query.filter_by(name=rn).first()
    if room is None:
        return jsonify(result="fail",
                       type="joinRoom",
                       message="The room doesn't exist.")
    if room.password:
        password = request.form.get("password", None)
        if password != room.password:
            return jsonify(result="fail",
                           type="joinRoom",
                           message="Password is incorrect.")
    if redis.hget("roomstatus", room.name) == "1":
        return jsonify(result="fail",
                       type="joinRoom",
                       message="The room is on the game, please join later.")
    elif (current_user not in room.users) and len(room.users) >= 6:
        return jsonify(result="fail",
                       type="joinRoom",
                       message="Sorry, the room is already full.")
    elif current_user in room.users:
        return jsonify(result="success",
                       type="joinRoom",
                       data={
                           "room": room.name,
                           "room_url": url_for('chat.room', rn=room.name)
                       })
    try:
        room.users.append(current_user)
        db.session.commit()
    except:
        return jsonify(result="fail",
                       type="joinRoom",
                       dmessage="Sorry, the room is already full.")
    redis.zadd(room.name + "_score", {current_user.nickname: 0})
    redis.hset(room.name, current_user.nickname, 0)
    return jsonify(result="success",
                   type="joinRoom",
                   data={
                       "room": room.name,
                       "room_url": url_for('chat.room', rn=room.name)
                   })