def overview(): q = Query(CsdcContestant) sc = onetimescorecard().subquery() q = q.outerjoin(sc, CsdcContestant.player_id == sc.c.player_id) totalcols = [] wktotal = [] wkbonuses = [] for col in ("fifteenrune", "sub40k", "zig", "lowxlzot", "nolairwin", "asceticrune"): totalcols.append(func.ifnull(getattr(sc.c, col), 0)) q = q.add_column(getattr(sc.c, col).label(col)) for wk in weeks: a = wk.sortedscorecard().subquery() totalcols.append(func.ifnull(a.c.total, 0)) wktotal.append(a.c.total) wkbonuses.append(func.ifnull(a.c.bonusone, 0) + func.ifnull(a.c.bonustwo, 0)) q = q.outerjoin(a, CsdcContestant.player_id == a.c.player_id ).add_column( a.c.total.label("wk" + wk.number)) return q.add_columns( sc.c.account_id.label("account_id"), sum(totalcols).label("grandtotal"), sum(wkbonuses).label("tiebreak"), sc.c.hiscore.label("hiscore"), (func.coalesce(*wktotal) != None).label("played") ).order_by(desc("grandtotal"),desc("tiebreak"),desc("hiscore"),desc("played"))
def overview(): q = Query(CsdcContestant) totalcols = [] for wk in weeks: a = wk.scorecard().subquery() totalcols.append(func.ifnull(a.c.total, 0)) q = q.outerjoin(a, CsdcContestant.player_id == a.c.player_id).add_column( a.c.total.label("wk" + wk.number)) return q.add_column(sum(totalcols).label("grandtotal")).order_by( desc("grandtotal"))