def admin_dashboard(): bot_used, bot_total = get_bot_space() b_cap = 100 - (((float(bot_used or 0) / bot_total)) * 100) return render_template("admin/index.html", users_count=g.cursor.count("users"), games_count=g.cursor.count("games"), matches_count=g.cursor.count("matches"), bets_count=g.cursor.count("bets"), b_used=bot_used, b_total=bot_total, b_cap=b_cap)
def route_match_bet(match_id): try: items = map(int, json.loads(request.values.get("items"))) team = int(request.values.get("team")) except Exception as e: raise APIError("Invalid Request: %s" % e) # Make sure this seems mildly valid apiassert(0 < len(items) <= 4, "Too many items") match = g.cursor.select("matches", "id", "teams", "lock_date", "match_date", "public_date", "active", "max_value_item", "max_value_total", id=match_id).fetchone() itemvs = g.cursor.execute("SELECT id, name, price FROM items WHERE id IN %s", (tuple(items), )).fetchall(as_list=True) apiassert(len(itemvs) == len(items), "Invalid Item ID's") # Make sure we haven't bet too much shit if match.max_value_item: for item in itemvs: apiassert(item.price < match.max_value_item, "Price of item %s is too high!" % item.name) if match.max_value_total: apiassert(sum(map(lambda i: i.price, itemvs)) < match.max_value_total, "Total value placed is too high!") # Make sure we have a valid match apiassert(match, "Invalid match ID") apiassert(match.active, "Invalid match ID") apiassert(match.public_date.replace(tzinfo=None) < datetime.utcnow(), "Invalid match ID") apiassert(match.lock_date.replace(tzinfo=None) > datetime.utcnow(), "Match is locked") apiassert(len(match.teams) > team, "Invalid Team") # Make sure this user doesn't already have a bet on this match g.cursor.execute("SELECT * FROM bets WHERE better=%s AND match=%s", (g.user, match.id)) apiassert(g.cursor.fetchone() == None, "Bet already created") # Ensure we have space for the items used, avail = get_bot_space() apiassert(avail > len(items), "No space left for bet") return APIResponse({ "bet": create_bet(g.user, match_id, team, itemvs) })