def test_init_has_alert(self): self.assertFalse(Bid(level='1', suit='c').has_alert) self.assertFalse(Bid(level='2', suit='d').has_alert) self.assertFalse(Bid(level='3', suit='n').has_alert) self.assertFalse(Bid(level='4', suit='h').has_alert) self.assertFalse(Bid(level='5', suit='s').has_alert) self.assertTrue(Bid(level='5', suit='s', has_alert=True).has_alert) self.assertTrue( Bid(level='5', suit='s', has_alert=True, annotation='Alert').has_alert) self.assertFalse(Bid(is_pass=True).has_alert) self.assertFalse(Bid(is_double=True).has_alert) self.assertFalse(Bid(is_redouble=True).has_alert)
def test_init_level(self): self.assertEqual(Bid(level='1', suit='c').level, '1') self.assertEqual(Bid(level='2', suit='d').level, '2') self.assertEqual(Bid(level='3', suit='n').level, '3') self.assertEqual(Bid(level='4', suit='h').level, '4') self.assertEqual(Bid(level='5', suit='s').level, '5') self.assertEqual(Bid(level='5', suit='s', has_alert=True).level, '5') self.assertEqual( Bid(level='5', suit='s', has_alert=True, annotation='Alert').level, '5') self.assertIsNone(Bid(is_pass=True).level) self.assertIsNone(Bid(is_double=True).level) self.assertIsNone(Bid(is_redouble=True).level)
def response(): log("initiating cronscan", important=True) az = Auction.query( Auction.settled == False, Auction.deadline <= datetime.now() ).all() log("found %s active auctions"%(len(az),)) for a in az: b = Bid.query( Bid.emailed == False, Bid.auction == a.key ).order("-amount").get() if b: u = b.user.get() log("emailing %s"%(u.email,), 1) cw = config.web send_mail( to = u.email, subject = "you won the auction!", body = CSB%("%s://%s:%s/_store?action=claim&bid=%s"%(cw.protocol, cw.host, cw.port, b.key.urlsafe()),) ) b.emailed = True b.put() log("cronscan succeeded -- goodbye!")
def get_leader(auction): team_for_bid = get_current_team(auction.auction_name) if team_for_bid: try: high_bid = Bid.select(fn.MAX( Bid.bid_amount)).where((Bid.team_bid == team_for_bid) & (Bid.auction == auction)).scalar() leader = Bid.select().where((Bid.team_bid == team_for_bid) & (Bid.bid_amount == high_bid) & (Bid.auction == auction)).get() bid_leader = leader.participant except Bid.DoesNotExist: high_bid = 0 bid_leader = 'Nobody' return team_for_bid, high_bid, bid_leader else: return False
def bid_creation(): global time_left bidder = user_from_username(request.form['name']) bid_amt = int(request.form['bid']) auction_name = request.form['auction'] auction = Auction.select().where( Auction.auction_name == auction_name).get() team_for_bid, high_bid, bid_leader = get_leader(auction) if bid_amt > high_bid and time_left > 0: Bid.create(participant=bidder, team_bid=team_for_bid, bid_amount=bid_amt, bid_time_stamp=datetime.datetime.now(), auction=auction) data = { 'id': "bid-{}".format(uuid.uuid4().hex), 'team': team_for_bid.team, 'bidder': bidder.username, 'bid_amt': bid_amt, 'status': 'active', 'event_name': 'created', 'reset': 1 } pusher.trigger(auction_name, "bid-added", data) time_left = 10 return jsonify(data) else: message = bidder.username + ' - FAILED BID' data = { 'id': "bid-{}".format(uuid.uuid4().hex), 'team': team_for_bid.team, 'bidder': message, 'bid_amt': bid_amt, 'status': 'active', 'event_name': 'created', 'reset': 0 } pusher.trigger(auction_name, "bid-added", data) return jsonify(data)
def view(): all_teams = Team.select() all_bids = Bid.select().where(Bid.team_bid == all_teams[0]).order_by( Bid.bid_amount) return render_template('view.jinja2', all_teams=all_teams, bids=all_bids)
def parse(mb): return VugraphMB(Bid.parse(mb))
def test_repr(self): self.assertEqual(str(Bid.parse('2d')), '2d')
def test_parse_invalid(self): with self.assertRaises(Exception): Bid.parse('8c') # 8 not a valid level with self.assertRaises(Exception): Bid.parse('1x') # x not a valid suit
def test_parse_valid(self): self.assertEqual(str(Bid.parse('1c')), '1c') self.assertEqual(str(Bid.parse('2d')), '2d') self.assertEqual(str(Bid.parse('3n')), '3n') self.assertEqual(str(Bid.parse('4h')), '4h') self.assertEqual(str(Bid.parse('5s!')), '5s!') self.assertEqual(str(Bid.parse('p')), 'p') self.assertEqual(str(Bid.parse('x')), 'x') self.assertEqual(str(Bid.parse('xx')), 'xx') self.assertEqual(str(Bid.parse('1C')), '1c') self.assertEqual(str(Bid.parse('2D')), '2d') self.assertEqual(str(Bid.parse('3N')), '3n') self.assertEqual(str(Bid.parse('4H')), '4h') self.assertEqual(str(Bid.parse('5S!')), '5s!') self.assertEqual(str(Bid.parse('P')), 'p') self.assertEqual(str(Bid.parse('X')), 'x') self.assertEqual(str(Bid.parse('XX')), 'xx')
def test_parse(self): self.assertEqual(VugraphMB.parse('3c').bid, Bid(level=3, suit='c')) self.assertEqual(VugraphMB.parse('p').bid, Bid(is_pass=True)) self.assertEqual(VugraphMB.parse('x').bid, Bid(is_double=True)) self.assertEqual(VugraphMB.parse('d').bid, Bid(is_double=True)) self.assertEqual(VugraphMB.parse('xx').bid, Bid(is_redouble=True))
def test_init(self): self.assertEqual(VugraphMB(Bid(is_pass=True)).bid, Bid(is_pass=True))