def history(request): base = base_ctx('Records', 'History', request) # {{{ Filtering (appears faster with custom SQL) nplayers = int(get_param(request, 'nplayers', '5')) race = get_param_choice(request, 'race', ['ptzrs', 'p', 't', 'z', 'ptrs', 'tzrs', 'pzrs'], 'ptzrs') nats = get_param_choice(request, 'nats', ['all', 'foreigners'] + list(data.ccn_to_cca2.values()), 'all') query = '''SELECT player.id, player.tag, player.race, player.country, MAX(rating.rating) AS high FROM player JOIN rating ON player.id=rating.player_id''' if race != 'ptzrs' or nats != 'all': query += ' WHERE ' ands = [] if race != 'ptzrs': ands.append( '(' + ' OR '.join(["player.race='%s'" % r.upper() for r in race]) + ')') if nats == 'foreigners': ands.append("(player.country!='KR')") elif nats != 'all': ands.append("(player.country='%s')" % nats) query += ' AND '.join(ands) query += ' GROUP BY player.id, player.tag, player.race, player.country ORDER BY high DESC LIMIT %i' % nplayers players = Player.objects.raw(query) # }}} base.update({ 'race': race, 'nats': nats, 'nplayers': nplayers, 'players': [(p, p.rating_set.select_related('period')) for p in players], 'countries': country_list(Player.objects.all()), 'charts': True, 'patches': PATCHES, }) return render_to_response('history.djhtml', base)
def teams(request): base = base_ctx('Teams', 'Ranking', request) all_teams = Group.objects.filter(is_team=True).prefetch_related('groupmembership_set') active = all_teams.filter(active=True) sort = get_param_choice(request, 'sort', ['ak','pl','rt','np'], 'ak') if sort == 'pl': active = active.order_by('-scorepl', 'name') elif sort == 'ak': active = active.order_by('-scoreak', 'name') elif sort == 'rt': active = active.order_by('-meanrating', 'name') else: active = active.order_by('name') for t in active: t.nplayers = sum([1 if m.current and m.playing else 0 for m in t.groupmembership_set.all()]) if sort == 'np': active = sorted(list(active), key=lambda a: -a.nplayers) inactive = all_teams.filter(active=False).order_by('name') base.update({ 'active': active, 'inactive': inactive, }) base.update({"title": "Teams"}) return render_to_response('teams.html', base)
def teams(request): base = base_ctx('Teams', 'Ranking', request) all_teams = Group.objects.filter( is_team=True).prefetch_related('groupmembership_set') active = all_teams.filter(active=True) sort = get_param_choice(request, 'sort', ['ak', 'pl', 'rt', 'np'], 'ak') if sort == 'pl': active = active.order_by('-scorepl', 'name') elif sort == 'ak': active = active.order_by('-scoreak', 'name') elif sort == 'rt': active = active.order_by('-meanrating', 'name') else: active = active.order_by('name') for t in active: t.nplayers = sum([ 1 if m.current and m.playing else 0 for m in t.groupmembership_set.all() ]) if sort == 'np': active = sorted(list(active), key=lambda a: -a.nplayers) inactive = all_teams.filter(active=False).order_by('name') base.update({ 'active': active, 'inactive': inactive, }) return render_to_response('teams.djhtml', base)
def history(request): base = base_ctx('Records', 'History', request) # {{{ Filtering (appears faster with custom SQL) nplayers = int(get_param(request, 'nplayers', '5')) race = get_param_choice(request, 'race', ['ptzrs','p','t','z','ptrs','tzrs','pzrs'], 'ptzrs') nats = get_param_choice(request, 'nats', ['all','foreigners'] + list(data.ccn_to_cca2.values()), 'all') query = '''SELECT player.id, player.tag, player.race, player.country, MAX(rating.rating) AS high FROM player JOIN rating ON player.id=rating.player_id''' if race != 'ptzrs' or nats != 'all': query += ' WHERE ' ands = [] if race != 'ptzrs': ands.append('(' + ' OR '.join(["player.race='%s'" % r.upper() for r in race]) + ')') if nats == 'foreigners': ands.append("(player.country!='KR')") elif nats != 'all': ands.append("(player.country='%s')" % nats) query += ' AND '.join(ands) query += ' GROUP BY player.id, player.tag, player.race, player.country ORDER BY high DESC LIMIT %i' % nplayers players = Player.objects.raw(query) # }}} base.update({ 'race': race, 'nats': nats, 'nplayers': nplayers, 'players': [(p, p.rating_set.select_related('period')) for p in players], 'countries': country_list(Player.objects.all()), 'charts': True, 'patches': PATCHES, }) base.update({"title": _("History")}) return render_to_response('history.html', base)