Пример #1
0
    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
Пример #2
0
    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
Пример #3
0
 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
Пример #4
0
 def send_api_key(self, email):
     send_message(email, "api_key", spac=self)
     return "Message sent to %s" % email