Example #1
0
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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
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)