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.')
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'])
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'])
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)
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'])
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) })