Example #1
0
def get_recent_matches_for_player(request):
    company = request.api_info['company']

    # require player_id
    if 'player_id' not in request.REQUEST or \
            request.REQUEST['player_id'] == '':
        return api_response_invalid(missing_field='player_id')

    # validate player id
    try:
        player_id = int(request.REQUEST['player_id'])
    except TypeError:
        return api_response_invalid(invalid_field='player_id')
    except ValueError:
        return api_response_invalid(invalid_field='player_id')

    # find player
    try:
        player = Player.objects.get(pk=player_id)
    except ObjectDoesNotExist:
        return api_response(success=False,
                            error='player not found',
                            error_code='player_not_found')

    # confirm player is in company
    if not player.company.id == company.id:
        return api_response(success=False,
                            error='permission denied',
                            error_code='permission denied')

    # return matches
    matches = [serialize_match(m) for m in player.get_recent_matches()]
    return api_response(success=True, matches=matches)
Example #2
0
def add_player(request):
    company = request.api_info['company']

    # require name
    if 'name' not in request.REQUEST or \
            request.REQUEST['name'] == '':
        return api_response_invalid(missing_field='name')
    name = request.REQUEST['name']

    # check for duplicates
    existing_count = Player.objects.filter(name=name, company=company).count()

    if existing_count > 0:
        return api_response(success=False,
                            error='duplicate player name',
                            error_code='player_already_exists')

    # create a new player
    player = company.player_set.create(
        name=name,
        rank=company.player_set.count() + 1,
        rating=500,  # todo: company can specify the starting rating
    )

    # save company to update the last changed time
    company.save()

    return api_response(success=True, player_id=player.id)
Example #3
0
def add_player(request):
    company = request.api_info['company']

    # require name
    if 'name' not in request.REQUEST or \
            request.REQUEST['name'] == '':
        return api_response_invalid(missing_field='name')
    name = request.REQUEST['name']

    # check for duplicates
    existing_count = Player.objects.filter(
            name=name,
            company=company
        ).count()

    if existing_count > 0:
        return api_response(
            success=False,
            error='duplicate player name',
            error_code='player_already_exists'
            )

    # create a new player
    player = company.player_set.create(
        name = name,
        rank = company.player_set.count() + 1,
        rating = 500, # todo: company can specify the starting rating
    )

    # save company to update the last changed time
    company.save()

    return api_response(success=True, player_id=player.id)
Example #4
0
def reset_api_access_key(request):
    if request.user.profile.company:
        key = request.user.profile.company.reset_api_access_key()
        return api_response(success=True, api_access_key=key)
    return api_response(success=False,
                        error="Invalid company",
                        error_code="invalid_company")
Example #5
0
def get_recent_matches_between_players(request):
    company = request.api_info['company']

    # require player1_id and player2_id
    if 'player1_id' not in request.REQUEST or \
            request.REQUEST['player1_id'] == '':
        return api_response_invalid(missing_field='player1_id')
    elif 'player2_id' not in request.REQUEST or \
            request.REQUEST['player2_id'] == '':
        return api_response_invalid(missing_field='player2_id')

    # validate player ids
    try:
        player1_id = int(request.REQUEST['player1_id'])
    except TypeError:
        return api_response_invalid(invalid_field='player1_id')
    except ValueError:
        return api_response_invalid(invalid_field='player1_id')
    try:
        player2_id = int(request.REQUEST['player2_id'])
    except TypeError:
        return api_response_invalid(invalid_field='player2_id')
    except ValueError:
        return api_response_invalid(invalid_field='player2_id')

    # find players
    try:
        player1 = Player.objects.get(pk=player1_id)
    except ObjectDoesNotExist:
        return api_response(
            success=False,
            error='player1 not found',
            error_code='player_not_found'
            )
    try:
        player2 = Player.objects.get(pk=player2_id)
    except ObjectDoesNotExist:
        return api_response(
            success=False,
            error='player2 not found',
            error_code='player_not_found'
            )

    # confirm players are in company
    if not player1.company.id == company.id or \
            not player2.company.id == company.id:
        return api_response(
            success=False,
            error='permission denied',
            error_code='permission denied'
            )

    # return matches
    matches = [
            serialize_match(m)
            for m in player1.get_recent_matches_with_player(player2)]
    return api_response(success=True, matches=matches)
Example #6
0
def add_match(request):
    company = request.api_info['company']

    # require winner_id and loser_id
    if 'winner_id' not in request.REQUEST or \
            request.REQUEST['winner_id'] == '':
        return api_response_invalid(missing_field='winner_id')
    elif 'loser_id' not in request.REQUEST or \
            request.REQUEST['loser_id'] == '':
        return api_response_invalid(missing_field='loser_id')

    # validate player ids
    try:
        winner_id = int(request.REQUEST['winner_id'])
    except TypeError:
        return api_response_invalid(invalid_field='winner_id')
    except ValueError:
        return api_response_invalid(invalid_field='winner_id')
    try:
        loser_id = int(request.REQUEST['loser_id'])
    except TypeError:
        return api_response_invalid(invalid_field='loser_id')
    except ValueError:
        return api_response_invalid(invalid_field='loser_id')

    # find players
    try:
        winner = Player.objects.get(pk=winner_id)
    except ObjectDoesNotExist:
        return api_response(success=False,
                            error='winner not found',
                            error_code='player_not_found')
    try:
        loser = Player.objects.get(pk=loser_id)
    except ObjectDoesNotExist:
        return api_response(success=False,
                            error='loser not found',
                            error_code='player_not_found')

    # confirm players are in company
    if not winner.company.id == company.id or \
            not loser.company.id == company.id:
        return api_response(success=False,
                            error='permission denied',
                            error_code='permission denied')

    # create new match
    match = company.match_set.create(winner=winner,
                                     loser=loser,
                                     played_time=datetime.datetime.now())

    # save company to update the last changed time
    company.save()

    return api_response(success=True, match_id=match.id)
Example #7
0
def get_players(request):
    info = request.api_info['company'].get_info()
    players = [
        dict(id=p.id, name=p.name, rank=p.rank, rating=p.rating)
        for p in info['players']
    ]
    return api_response(success=True, players=players)
Example #8
0
def get_players(request):
    info = request.api_info['company'].get_info()
    players = [dict(
        id=p.id,
        name=p.name,
        rank=p.rank,
        rating=p.rating
        ) for p in info['players']]
    return api_response(success=True, players=players)
Example #9
0
def set_viewed_notifications(request):
    request.user.profile.last_viewed_notifications = datetime.datetime.now()
    request.user.profile.save()
    return api_response(success=True)
Example #10
0
def reset_api_access_key(request):
    if request.user.profile.company:
        key = request.user.profile.company.reset_api_access_key()
        return api_response(success=True, api_access_key=key)
    return api_response(success=False, error="Invalid company", error_code="invalid_company")
Example #11
0
def get_recent_matches_for_company(request):
    company = request.api_info['company']
    matches = [serialize_match(m) for m in company.get_recent_matches()]
    return api_response(success=True, matches=matches)
Example #12
0
def test(request):
    return api_response(success=True, foo='bar')
Example #13
0
def set_viewed_notifications(request):
    request.user.profile.last_viewed_notifications = datetime.datetime.now()
    request.user.profile.save()
    return api_response(success=True)
Example #14
0
def get_recent_matches_for_company(request):
    company = request.api_info['company']
    matches = [serialize_match(m) for m in company.get_recent_matches()]
    return api_response(success=True, matches=matches)
Example #15
0
def add_match(request):
    company = request.api_info['company']

    # require winner_id and loser_id
    if 'winner_id' not in request.REQUEST or \
            request.REQUEST['winner_id'] == '':
        return api_response_invalid(missing_field='winner_id')
    elif 'loser_id' not in request.REQUEST or \
            request.REQUEST['loser_id'] == '':
        return api_response_invalid(missing_field='loser_id')

    # validate player ids
    try:
        winner_id = int(request.REQUEST['winner_id'])
    except TypeError:
        return api_response_invalid(invalid_field='winner_id')
    except ValueError:
        return api_response_invalid(invalid_field='winner_id')
    try:
        loser_id = int(request.REQUEST['loser_id'])
    except TypeError:
        return api_response_invalid(invalid_field='loser_id')
    except ValueError:
        return api_response_invalid(invalid_field='loser_id')

    # find players
    try:
        winner = Player.objects.get(pk=winner_id)
    except ObjectDoesNotExist:
        return api_response(
            success=False,
            error='winner not found',
            error_code='player_not_found'
            )
    try:
        loser = Player.objects.get(pk=loser_id)
    except ObjectDoesNotExist:
        return api_response(
            success=False,
            error='loser not found',
            error_code='player_not_found'
            )

    # confirm players are in company
    if not winner.company.id == company.id or \
            not loser.company.id == company.id:
        return api_response(
            success=False,
            error='permission denied',
            error_code='permission denied'
            )

    # create new match
    match = company.match_set.create(
        winner = winner,
        loser = loser,
        played_time = datetime.datetime.now()
    )

    # save company to update the last changed time
    company.save()

    return api_response(success=True, match_id=match.id)
Example #16
0
def test(request):
    return api_response(success=True, foo='bar')