コード例 #1
0
ファイル: api.py プロジェクト: AlecJ/rpgmanager
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
コード例 #2
0
ファイル: api.py プロジェクト: AlecJ/rpgmanager
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
コード例 #3
0
ファイル: api.py プロジェクト: AlecJ/rpgmanager
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
コード例 #4
0
ファイル: api.py プロジェクト: AlecJ/rpgmanager
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
コード例 #5
0
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()
コード例 #6
0
ファイル: api.py プロジェクト: AlecJ/rpgmanager
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
コード例 #7
0
ファイル: api.py プロジェクト: AlecJ/rpgmanager
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