async def claim_invite(request): user = await check_authorized(request) data = await request.json() room = Room.get_or_none(invitation_code=data["code"]) if room is None: return web.HTTPNotFound() else: if user.name != room.creator and not PlayerRoom.get_or_none( player=user, room=room): PlayerRoom.create(player=user, room=room) for csid in state.get_sids(user=room.creator, room=room): await sio.emit( "Room.Info.Players.Add", { "id": user.id, "name": user.name }, room=csid, namespace="/planarally", ) return web.json_response({ "sessionUrl": f"/game/{urllib.parse.quote(room.creator.name, safe='')}/{urllib.parse.quote(room.name, safe='')}" })
async def claim_invite(request): user = await check_authorized(request) data = await request.json() room = Room.get_or_none(invitation_code=data["code"]) if room is None: return web.HTTPNotFound() else: if user != room.creator and not PlayerRoom.get_or_none(player=user, room=room): query = PlayerRoom.select().where(PlayerRoom.room == room) try: loc = query.where( PlayerRoom.role == Role.PLAYER)[0].active_location except IndexError: loc = query.where( PlayerRoom.role == Role.DM)[0].active_location PlayerRoom.create(player=user, room=room, role=Role.PLAYER, active_location=loc) for csid in game_state.get_sids(player=room.creator, room=room): await sio.emit( "Room.Info.Players.Add", { "id": user.id, "name": user.name }, room=csid, namespace="/planarally", ) return web.json_response({ "sessionUrl": f"/game/{urllib.parse.quote(room.creator.name, safe='')}/{urllib.parse.quote(room.name, safe='')}" })
async def create(request: web.Request): user: User = await check_authorized(request) data = await request.json() roomname = data["name"] logo = data["logo"] if not roomname: return web.HTTPBadRequest() else: if Room.get_or_none(name=roomname, creator=user): return web.HTTPConflict() with db.atomic(): default_options = LocationOptions.create() room = Room.create( name=roomname, creator=user, default_options=default_options, ) if logo >= 0: room.logo_id = logo loc = Location.create(room=room, name="start", index=1) loc.create_floor() PlayerRoom.create(player=user, room=room, role=Role.DM, active_location=loc) room.save() return web.HTTPOk()
async def create(request): allow_new_sessions = config.getboolean("Access control", "allow_new_sessions") if not allow_new_sessions: return web.HTTPConflict( reason="This feature is disabled by administrator") user = await check_authorized(request) data = await request.json() roomname = data["name"] if not roomname: return web.HTTPBadRequest() else: with db.atomic(): default_options = LocationOptions.create() room = Room.create(name=roomname, creator=user, default_options=default_options) loc = Location.create(room=room, name="start", index=1) loc.create_floor() PlayerRoom.create(player=user, room=room, role=Role.DM, active_location=loc) room.save() return web.HTTPOk()
async def claim_invite(request): user = await check_authorized(request) room = Room.get_or_none(invitation_code=request.match_info["code"]) if room is None: return web.HTTPNotFound() else: if user.name != room.creator and not PlayerRoom.get_or_none( player=user, room=room): PlayerRoom.create(player=user, room=room) return web.HTTPFound(f"/rooms/{room.creator.name}/{room.name}")
async def claim_invite(request): user = await check_authorized(request) data = await request.json() room = Room.get_or_none(invitation_code=data["code"]) if room is None: return web.HTTPNotFound() else: if user.name != room.creator and not PlayerRoom.get_or_none( player=user, room=room): PlayerRoom.create(player=user, room=room) return web.json_response( {"sessionUrl": f"/game/{room.creator.name}/{room.name}"})
async def create(request): user = await check_authorized(request) data = await request.json() roomname = data["name"] if not roomname: return web.HTTPBadRequest() else: with db.atomic(): default_options = LocationOptions.create() room = Room.create(name=roomname, creator=user, default_options=default_options) loc = Location.create(room=room, name="start", index=1) loc.create_floor() PlayerRoom.create(player=user, room=room, role=Role.DM, active_location=loc) room.save() return web.HTTPOk()