def do_pay(self, send_mail=True): """ Step 3: - redistribute money pool according to the outcomes """ try: assert self.sync_done == True assert self.calc_done == True fromaccount = "%s-%s-%s" % (self.year, self.month, self.day) bets = self.bet_set.fetch(1000) spacs = Spac.get_bet_owners(bets) todict = {} for i, spac in enumerate(spacs): if bets[i].outcome == 0.0: continue todict[spac.address] = bets[i].outcome if todict: result = btc.connection.sendmany(fromaccount, todict) self.pay_done = True self.put() if send_mail: send_message("ADMINS", "do_pay", day=self, status="ok") except: import traceback tb = traceback.format_exc() if send_mail: send_message("ADMINS", "do_pay", day=self, status="pay error", traceback=tb) raise
def do_sync(self, send_mail=True, mark_synced=True): """ Step 1: - determine this day's average price """ try: from utils.bitcoincharts import daily_weighted_prices d = daily_weighted_prices(self.year, self.month, self.day) self.actual_value = d["weighted_price"] self.trade_first_time = d["first_time"] self.trade_last_time = d["last_time"] self.trade_high = d["high"] self.trade_low = d["low"] self.trade_last = d["last"] self.trade_count = d["count"] self.trade_volume = d["vol"] self.trade_symbol_volume = d["symbol_volume"] if mark_synced: self.sync_done = True self.put() if send_mail: send_message("ADMINS", "do_sync", day=self, status="ok") except: import traceback tb = traceback.format_exc() if send_mail: send_message("ADMINS", "do_sync", day=self, status="sync error", traceback=tb) raise
def do_calc(self, send_mail=True): """ Step 2: - calculate expected outcomes for players """ try: assert self.sync_done == True from outcomes import calculate_outcomes from settings import COMMISSION_RATE bets = self.bet_set.fetch(1000) calculate_outcomes(self, bets, commission_rate=COMMISSION_RATE) db.put(bets) Spac.update_points_from_bets(bets) self.calc_done = True self.put() if send_mail: send_message("ADMINS", "do_calc", day=self, status="ok") except: import traceback tb = traceback.format_exc() if send_mail: send_message("ADMINS", "do_calc", day=self, status="calc error", traceback=tb) raise
def send_api_key(self, email): send_message(email, "api_key", spac=self) return "Message sent to %s" % email