Ejemplo n.º 1
0
def index(request):
    game_list = Game.objects.filter(game_date__gte=datetime.now() - timedelta(days=180)).order_by('-game_date')
    table = GameTable(game_list, prefix='games')
    topDanList = TopDan.objects.values()
    topDanTable = TopDanTable(topDanList)
    topKyuList = TopKyu.objects.values()
    topKyuTable = TopKyuTable(topKyuList)
    mostRatedGamesPastYearList = MostRatedGamesPastYear.objects.values()
    mostRatedGamesTable = MostRatedGamesPastYearTable(mostRatedGamesPastYearList)
    mostTournamentsPastYearList = MostTournamentsPastYear.objects.values()
    mostTournamentsPastYearTable = MostTournamentsPastYearTable(mostTournamentsPastYearList)
    RequestConfig(request).configure(table)
    tourneys = Tournament.objects.all().order_by('-tournament_date')
    t_table= TournamentTable(tourneys, prefix='tourneys')
    RequestConfig(request, paginate={'per_page': 10}).configure(t_table)

    return render(request, 'agagd_core/index.html',
            {
                'table': table,
                'top_dan_table': topDanTable,
                'top_kyu_table': topKyuTable,
                'most_rated_games_table': mostRatedGamesTable,
                'most_tournaments_table': mostTournamentsPastYearTable,
                'tournaments': t_table,
            })
Ejemplo n.º 2
0
def tournament_detail(request, tourn_code):
    tourney = Tournament.objects.get(pk=tourn_code)
    game_table = GameTable(tourney.games_in_tourney.all())
    RequestConfig(request, paginate={'per_page': 20}).configure(game_table)
    return render(request, 'agagd_core/tourney.html', {
        'game_table': game_table,
        'tournament': tourney,
    })
Ejemplo n.º 3
0
def index(request):
    game_list = Game.objects.filter(game_date__gte=datetime.now() -
                                    timedelta(days=180)).order_by('-game_date')
    table = GameTable(game_list, prefix='games')
    RequestConfig(request).configure(table)
    tourneys = Tournament.objects.all().order_by('-tournament_date')
    t_table = TournamentTable(tourneys, prefix='tourneys')
    RequestConfig(request, paginate={'per_page': 10}).configure(t_table)
    return render(request, 'agagd_core/index.html', {
        'table': table,
        'tournaments': t_table,
    })
Ejemplo n.º 4
0
def member_vs(request, member_id, other_id):
    player_1 = get_object_or_404(Member, member_id=member_id)
    player_2 = get_object_or_404(Member, member_id=other_id)
    game_list = Game.objects.filter(
        Q(pin_player_1=player_1, pin_player_2=player_2)
        | Q(pin_player_1=player_2,
            pin_player_2=player_1), ).order_by('-game_date')
    table = GameTable(game_list)
    RequestConfig(request, paginate={'per_page': 20}).configure(table)
    return render(request, 'agagd_core/member_vs.html', {
        'table': table,
        'player_1': player_1,
        'player_2': player_2,
    })
Ejemplo n.º 5
0
def member_detail(request, member_id):
    """
    The member detail page.
    Fetches the most recent games played and puts them in a Games Table.
    Fetches the list of ratings and puts them in a format for graphing.
    Computes the tournament data and opponent data for respective tables.
    """
    game_list = Game.objects.filter(
            Q(pin_player_1__exact=member_id) | Q(pin_player_2__exact=member_id)
            ).order_by('-game_date','round')
    table = GameTable(game_list, prefix='games')
    RequestConfig(request, paginate={'per_page': 20}).configure(table) 

    player = Member.objects.get(member_id=member_id)
    ratings = player.ratings_set.all().order_by('-elab_date')
    if len(ratings) > 0:
        max_rating = max([r.rating for r in ratings])
        last_rating = ratings[0]
    else:
        max_rating = last_rating = None

    #compute additional tables for opponents & tournament info. here
    #TODO: refactor this into something nicer.
    opponent_data = {}
    tourney_data = {}
    for game in game_list:
        try:
            t_dat = tourney_data.get(game.tournament_code.pk, {})
            t_dat['tournament'] = game.tournament_code
            t_dat['won'] = t_dat.get('won', 0)
            t_dat['lost'] = t_dat.get('lost', 0)

            # Set default game_date to None
            game_date = None

            # Check for 0000-00-00 dates
            if game.game_date != u'0000-00-00':
                game_date = game.game_date

            t_dat['date'] = t_dat.get('date', game_date)

            op = game.player_other_than(player)
            opp_dat = opponent_data.get(op, {}) 
            opp_dat['opponent'] = op
            opp_dat['total'] = opp_dat.get('total', 0) + 1
            opp_dat['won'] = opp_dat.get('won', 0)
            opp_dat['lost'] = opp_dat.get('lost', 0)
            if game.won_by(player):
                opp_dat['won'] += 1
                t_dat['won'] += 1
            else:
                opp_dat['lost'] += 1
                t_dat['lost'] += 1
            opponent_data[op] = opp_dat
            tourney_data[game.tournament_code.pk] = t_dat
        except exceptions.ObjectDoesNotExist:
            print( 'failing game_id: %s' % game.pk )

    opp_table = OpponentTable(opponent_data.values(), player, prefix='opp')
    opp_table.this_player = player
    RequestConfig(request, paginate={'per_page': 10}).configure(opp_table) 

    t_table = TournamentPlayedTable(
            sorted(tourney_data.values(), key=lambda d: d.get('date', date.today()) or date.today(), reverse=True),
            prefix='ts_played')
    RequestConfig(request, paginate={'per_page': 10}).configure(t_table)

    return render(request, 'agagd_core/member.html',
            {
                'table': table,
                'player': player,
                'rating': last_rating,
                'max_rating': max_rating,
                'num_games': len(game_list),
                'opponents': opp_table,
                'tourneys': t_table
            })