Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
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!")
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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)
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
 def parse(mb):
     return VugraphMB(Bid.parse(mb))
Ejemplo n.º 8
0
 def test_repr(self):
     self.assertEqual(str(Bid.parse('2d')), '2d')
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
 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')
Ejemplo n.º 11
0
 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))
Ejemplo n.º 12
0
 def test_init(self):
     self.assertEqual(VugraphMB(Bid(is_pass=True)).bid, Bid(is_pass=True))