Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def my_untie(url):
- import challonge
- from connect import my_connect
- err = my_connect(challonge, "LeFrenchMelee")
- from tools import url_parse
- subdomain, name = url_parse(url)
- if subdomain:
- name = subdomain+'-'+name
- tournament = challonge.tournaments.show(name)
- tid = tournament["id"]
- from operator import itemgetter
- participants = sorted(challonge.participants.index(tid), key=itemgetter("seed"))
- ranks = sorted(participants, key=itemgetter("final-rank"))
- from itertools import groupby
- groups = groupby(ranks, itemgetter("final-rank"))
- postoscore = {j[0]:i for i,j in enumerate(reversed(list(groups)))}
- tb = [0 for _ in participants]
- buchholz = [[] for _ in participants]
- diff = [0 for _ in participants]
- idtoseed = {p['id'] : p['seed'] for p in participants}
- matches = challonge.matches.index(tid)
- for m in matches:
- if participants[idtoseed[m['loser-id']]-1]['final-rank'] == participants[idtoseed[m['winner-id']]-1]['final-rank']:
- tb[idtoseed[m['winner-id']]-1] += 1
- buchholz[idtoseed[m['loser-id']]-1].append(postoscore[participants[idtoseed[m['winner-id']]-1]['final-rank']])
- buchholz[idtoseed[m['winner-id']]-1].append(postoscore[participants[idtoseed[m['loser-id']]-1]['final-rank']])
- from tools import my_split, multi_split
- score = multi_split(m['scores-csv']) if ',' in m['scores-csv'] else my_split(m['scores-csv'])
- if score == ["", "{{win}}"]:
- score = ["-1", "0"]
- if score == ["{{win}}", ""]:
- score = ["0", "-1"]
- diff[idtoseed[m['player1-id']]-1] += int(score[0])-int(score[1])
- diff[idtoseed[m['player2-id']]-1] += int(score[1])-int(score[0])
- ranking = sorted(zip(participants, tb, buchholz, diff), key=lambda p:(p[0]['final-rank'], -p[1], -(sum(p[2])-min(p[2])-max(p[2])), -p[3]))
- ranking_groups = groupby(ranking, lambda p:(p[0]['final-rank'], -p[1], -(sum(p[2])-min(p[2])-max(p[2])), -p[3]))
- r = 1
- ranking_t = []
- for _, l in ranking_groups:
- l = list(l)
- for p in l:
- ranking_t.append((r, p[0]['name'], p[0]['final-rank'], p[1], sum(p[2])-min(p[2])-max(p[2]), p[3]))
- r += len(l)
- from html import page, par, form, input, br, link, val, textarea, table, tr, td, th
- ranking_l = table(tr('\t'.join([th(i) for i in ['rank', 'name', 'official rank', 'TB', 'Buchholz', 'Pts Diff']]))+'\n'+
- '\n'.join([tr('\t'.join([td(str(p[0])), td(p[1])]+[td(str(i)) for i in p[2:]])) for p in ranking_t]))
- tournaments = challonge.tournaments.index()
- other_links = [t['full-challonge-url'] for t in tournaments]
- other_list = [link(l.split("/")[-1], "./untie?url="+l) for l in other_links]
- other_l = br().join(other_list)
- my_form = form(input("url"), "Untie!")
- return page("Untie", par(val("name", name))+my_form+par(ranking_l)+par(other_l))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement