def create_room(): """ Route creates new room and redirects to the lobby. It adds a new player to the room and sets session cookie if not present """ username = request.forms.get("username") if len(username) == 0: return HTTPError(403, "Username too short") sessid = request.cookies.get("sessid", generate_sessid()) room = Room.create(code=generate_room_code()) player = Player.create(sessid=sessid, name=username, room=room) room.owner = player room.save() response.set_cookie("sessid", sessid, path="/") return redirect("/game/%s/lobby" % room.code)
def join(): """ Route invoked when a new player joins the room. Adds player to the room and sets his session cookie. Posts the join message to other players in the room. """ username = request.forms.get("username") if len(username) == 0: return HTTPError(403, "Username too short") room_code = request.forms.get("room").upper() try: room = Room.select(Room).where(Room.code == room_code).get() except Room.DoesNotExist: return HTTPError(404, "Room does not exist") sessid = request.cookies.get("sessid", generate_sessid()) player, created = Player.get_or_create(sessid=sessid, room=room, defaults={"name": username}) if created: message_data = {"player": {"id": player.id, "name": player.name}} post_message([Msg("join", message_data)], room=room) response.set_cookie("sessid", sessid, path="/") return redirect("/game/%s/lobby" % room.code)