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, })
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, })
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, })
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, })
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 })