def rpgmanager_get_campaign(): """ Client attempts to get a campaign. """ with session_scope() as session: # make sure the room code is valid room_code = request.args.get('campaignId') if not room_code: return "Invalid room code provided: {}".format(room_code), 400 campaign = get_campaign_by_room_code(session, room_code) if campaign: return campaign.row_as_dict(), 200 else: return "Room with code {} does not exist.".format(room_code), 400
def rpgmanager_create_character(): """ Creates and adds a character to a given campaign via room code. """ with session_scope() as session: # make sure the room code is valid room_code = request.json.get('campaignId') if not room_code: return "Invalid room code provided: {}".format(room_code), 400 campaign = create_player(session, room_code) if campaign: return campaign.row_as_dict(), 200 else: return "There are already six characters in the campaign.", 400
def rpgmanager_create_campaign(): """ Client creates a new Campaign. A campaign is returned and the user is redirected to their page. """ logger = _getLogger('rpgmanager_create_campaign') with session_scope() as session: campaign = create_campaign(session) if campaign: logger.info('create campaign: {}'.format(campaign.room_code)) return campaign.row_as_dict(), 200 else: logger.error("Error creating new room.") return "Error creating a new room.", 400
def rpgmanager_delete_character(): """ Deletes a character by id but verifies room code. """ with session_scope() as session: # make sure the room code is valid room_code = request.json.get('campaignId') character_id = request.json.get('characterId') if not room_code: return "Invalid room code provided: {}".format(room_code), 400 if delete_character(session, room_code, character_id): campaign = get_campaign_by_room_code(session, room_code) if campaign: return campaign.row_as_dict(), 200 return "Could not delete character.", 400
def remove_stale_rpgmanager_campaigns(): """ The criteria for a stale campaign is one that: - is a day old and has no players - hasn't been viewed in four months """ with session_scope() as session: # day old and no players day_ago = datetime.now() - timedelta(days=1) # stale_campaigns = session.query(RPGManagerCampaign).filter(RPGManagerCampaign.last_read_time < day_ago).filter().all() # last read > 120 days old four_months_ago = datetime.now() - timedelta(days=120) stale_campaigns = session.query(RPGManagerCampaign).filter(RPGManagerCampaign.last_read_time < four_months_ago).all() for c in stale_campaigns: session.delete(c) session.commit()
def rpgmanager_update_campaign(): """ Handles updating campaign info and all characters in a campaign. """ with session_scope() as session: data = request.json.get('data') # make sure the room code is valid room_code = request.json.get('campaignId') if not room_code: return "Invalid room code provided: {}".format(room_code), 400 # update players for character in data.get('characters', []): update_character(session, room_code, **character) campaign = update_campaign(session, room_code, **data) if campaign: return campaign.row_as_dict(), 200 else: return "Room with code {} does not exist.".format(room_code), 400
def rpgmanager_update_money(): """ Handles calculator function of adding and subtracting money for a given player. """ with session_scope() as session: # make sure the room code is valid room_code = request.json.get('campaignId') if not room_code: return "Invalid room code provided: {}".format(room_code), 400 character = request.json.get('data') update_character(session, room_code, **character) try: campaign = get_campaign_by_room_code(session, room_code) if campaign: return campaign.row_as_dict(), 200 else: return "Room with code {} does not exist.".format(room_code), 400 except Exception as e: # log error return "Error processing request", 400