def make_bet(request): betroom = BetRoom.objects.get(pk=int(request.POST.get('betroom_id'))) # r = requests.post('https://api.venmo.com/v1/payments', # data={'access_token': 'yZVbWJFyT3xFfjaB2DypJ9YfD9MMqAK3', # 'phone': '7134590138', 'note': 'testing', 'amount': 0.01}) # Last login: Sat Feb 7 23:26:03 on ttys000 # Shauryas-MacBook-Pro:~ shaurya$ curl https://api.venmo.com/v1/payments -d # access_token=yZVbWJFyT3xFfjaB2DypJ9YfD9MMqAK3 -d phone=7134590138 -d amount=0.10 # -d note="Delivery." # {"data": {"balance": "995.94", "payment": {"status": "settled", "refund": null, "medium": "", "id": "1615665900784976178", "fee": null, "date_completed": "2015-02-08T04:39:44.245878", "target": {"phone": null, "type": "user", "email": null, "user": {"username": "******", "first_name": "Margaret", "last_name": "Li", "display_name": "Margaret Li", "about": "No Short Bio", "profile_picture_url": "https://graph.facebook.com/727587894/picture?type=square", "id": "1273477843648512846", "date_joined": "2013-10-24T01:33:09"}}, "audience": "public", "actor": {"username": "******", "first_name": "Shaurya", "last_name": "Jain", "display_name": "Shaurya Jain", "about": "No Short Bio", "profile_picture_url": "https://s3.amazonaws.com/venmo/no-image.gif", "id": "1406025693396992353", "date_joined": "2014-04-24T22:42:04"}, "note": "Delivery.", "amount": 0.1, "action": "pay", "date_created": "2015-02-08T04:39:44.188339"}}}Shauryas-MacBook-Pro:~ shaurya$ r = requests.post('https://api.venmo.com/v1/payments', data={ 'access_token': str(request.POST.get('access')), 'phone': '7134590138', 'note': 'Bet placed on {}'.format( request.POST.get('choice')), 'amount': float(request.POST.get('amount')), }) print { 'access_token': str(request.POST.get('access')), 'phone': '7134590138', 'note': 'Bet placed on {}'.format(request.POST.get('choice')), 'amount': float(request.POST.get('amount')), } print r.json() print request.POST response = r.json()['data']['payment']['actor']['username'] b = Bet( date_created=timezone.now(), betroom_id=BetRoom.objects.get(pk=int(request.POST.get('betroom_id'))), from_id=response, to_id='shaurya-jain', bet_type='PAY_IN', bet_option=Option.objects.get(pk=int(request.POST.get('choice'))), name=request.POST.get('name'), amount=request.POST.get('amount')) b.save() return render( request, 'bets/room.html', { 'bet_room': betroom.room_name, 'bet_room_id': betroom.pk, 'options': betroom.options.all(), 'bets': betroom.bets.all(), 'url': betroom.url })
def place_bet(request, id): if request.method != 'POST': runner = Runner.objects.get(id=id) market = runner.market now = datetime.datetime.now(pytz.timezone('UTC')) if now > market.start_time: raise Http404('Market has started') bet = Bet() bet.market = market bet.runner = runner bet.selection_name = runner.selection_name bet.odds = runner.latest_odds bet.created_at = now bet.save() form = BetForm(instance=bet) else: bet = Bet.objects.get(id=id) now = datetime.datetime.now(pytz.timezone('UTC')) td = now - bet.created_at if td.seconds > 120: messages.error( request, 'More than 120 seconds have passed, please try again') return HttpResponseRedirect( reverse('markets:view_market', args=[bet.market.market_id])) elif bet.status == 'QUOTE': form = BetForm(instance=bet, data=request.POST) if form.is_valid(): confirmed_bet = form.save(commit=False) confirmed_bet.status = 'ACTIVE' confirmed_bet.save() else: messages.error(request, 'This bet has already been placed') context = { 'bet': bet, } return render(request, 'bets/bet_placed.html', context) context = { 'form': form, 'bet': bet, } return render(request, 'bets/place_bet.html', context)
def create_new(request): social_auth = request.user.social_auth.get(provider='steam') steamid = social_auth.extra_data.get('steamid') player_id = Player.objects.get(uid=steamid).id # only allow creation of new bets on POST requests # otherwise skip the whole thing. if request.method == 'POST': bet = Bet() bet.amount = request.POST['amount'] bet.rarity = request.POST['rarity'] bet.result = '?' bet.status = 'Open' bet.owner = Player.objects.get(id__exact=player_id) bet.save() return redirect('/bets') return render(request, 'bets_create_modal.html', {})
def group_details(request): if request.user.is_authenticated and request.user.id!=None: group_id = request.GET['group_id'] user = User.objects.get(id=request.user.id) group = Group.objects.get(id=group_id) if group.members.filter(id=user.id).exists() or group.owners.filter(id=user.id).exists(): allow_amount = request.user.groups.filter(name='allow_amount') all_users_ids = list(group.members.values_list('id', flat=True)) + list(group.owners.values_list('id', flat=True)) all_users = User.objects.filter(id__in=all_users_ids).order_by('id') all_matchs = group.event.matchs.all().order_by('when') all_bets = {} for match in all_matchs: match_bets = [] for a_user in all_users: bets = Bet.objects.filter(match__id=match.id, owner__id=a_user.id) if not bets.exists(): bet = Bet() bet.clean() bet.owner = a_user bet.match = match bet.when = datetime.datetime.now() bet.winner = None score = Score() score.name = match.name score.first = 0 score.second = 0 score.save() bet.result = score bet.save() match_bets.append(bet) else: match_bets.append(bets[0]) all_bets[match.name] = match_bets context = {'all_bets':all_bets, 'all_users': all_users, 'all_matchs': all_matchs, 'today': datetime.date.today().strftime('%Y-%m-%d'), 'allow_amount': allow_amount} return render(request,'group_details.html', context) raise PermissionDenied()
def get_evident_bet(evident_user, game): evident_bet = Bet() bets = [] users = User.objects.filter(groups__name="-money-") start_time = datetime(2012, 3, 1, 10, 0).replace(tzinfo=utc) evident_winner = 0 for user in users: try: bet = Bet.objects.filter(game=game, user=user, time__range=(start_time, game.time)).last() if bet.winner != None: evident_winner += int(bet.winner) bets.append((int(bet.home_ft_score), int(bet.visitor_ft_score))) except: print "" if not len(bets): return None evident_winner = int(round(float(7) / len(bets))) if game.id > settings.GROUP_GAMES: evident_bet.winner = evident_winner lst = Counter(bets).most_common() highest_count = max([i[1] for i in lst]) values = [i[0] for i in lst if i[1] == highest_count] random.shuffle(values) evident_bet.home_ft_score = values[0][0] evident_bet.visitor_ft_score = values[0][1] evident_bet.user = evident_user evident_bet.game = game evident_bet.time = start_time evident_bet.save() return evident_bet
def setUp(self): bet = Bet(teama="barcelona", teamb="real", oddsa=2.00, oddsx=3.20, oddsb=2.50, game_date="2020-02-21", category="11") bet.save() bettwo = Bet(teama="polska", teamb="anglia", oddsa=1.50, oddsb=2.50, game_date="2020-02-21", category="11") bettwo.save() user = User(username="******", email="*****@*****.**") user.set_password("haslo123") user.is_admin = False user.is_active = True user.is_customer = True user.save() user.customer.birth_date = datetime.date(1997, 10, 1) user.customer.money = 500.0 user.customer.save() placedbet = PlacedBet(pick="1") placedbet.save() placedbet = PlacedBet.objects.get(pk=1) placedbet.bet_id.add(bet) placedbet.save() placedbettwo = PlacedBet(pick="1") placedbettwo.save() placedbettwo.bet_id.add(bettwo) placedbettwo.save() coupon = Coupon(user=user, stake=20, is_placed=True, status=None) coupon.save() coupon.placedbets.add(placedbet) coupon.placedbets.add(placedbettwo) coupon.save()
def index(request): now = datetime.datetime.today() begin = dt.combine(datetime.date.today(), dt.min.time()) end = dt.combine(dates.AddDay(begin, 14), dt.max.time()) all_dates = Match.objects.filter(when__gte=begin, when__lte=end).order_by('when').dates('when','day') all_dates = [a_date.strftime('%Y-%m-%d') for a_date in all_dates] active_events = BettableEvent.objects.filter(end_date__gte=datetime.date.today).order_by('name') if request.user.is_authenticated and request.user.id!=None: user = User.objects.get(id=request.user.id) if get_user_meta(user)==None: initialize_user_meta(user) rankings = UserRanking.objects.filter(owner__id=user.id) if not rankings.exists(): initial_ranking = UserRanking() initial_ranking.owner = user initial_ranking.group = None initial_ranking.overall_score = 0 initial_ranking.rank = None initial_ranking.save() rankings = UserRanking.objects.filter(owner__id=user.id) global_ranking = UserRanking.objects.filter(owner__id=user.id, group=None) if global_ranking.exists(): global_ranking = global_ranking[0] else: global_ranking = None admin_groups = Group.objects.filter(Q(owners__id__exact=request.user.id)).distinct().order_by('name') member_groups = Group.objects.filter(Q(members__id__exact=request.user.id) | Q(owners__id__exact=request.user.id)).distinct().order_by('name') winner_setups = [] for group in list(admin_groups) + list(member_groups): setup = WinnerSetup.objects.filter(group__id=group.id, group__event__end_date__gte=now) if setup.exists(): setup = setup[0] all_steps = setup.setup.all() if all_steps.exists(): if not group.event.id in winner_setups: winner_setups.append(group.event.id) all_matches = Match.objects.filter(when__gte=begin, when__lte=end).order_by('when') all_bets = {} for match in all_matches: bet = Bet.objects.filter(owner__id=request.user.id, match__id=match.id) if bet.exists(): bet = bet[0] else: bet = Bet() bet.clean() bet.owner = user bet.match = match bet.when = datetime.datetime.now() bet.winner = None score = Score() score.name = match.name score.first = 0 score.second = 0 score.save() bet.result = score bet.save() all_bets[bet.match.id] = {'id': bet.id, 'score': {'first':bet.result.first, 'second':bet.result.second}, 'enabled':str(bet.match.when + datetime.timedelta(minutes=10)>=now).lower(), 'amount': bet.amount if bet.amount!=None else 0} allow_amount = request.user.groups.filter(name='allow_amount') context = {'winner_setups': winner_setups, 'admin_groups': admin_groups,'member_groups': member_groups, 'all_dates': all_dates, 'all_bets': all_bets, 'rankings': rankings, 'global_rank':global_ranking, 'events': active_events, 'allow_amount': allow_amount, 'events': active_events} else: context = {'all_dates': all_dates, 'events': active_events, 'all_bets': []} return render(request,'index.html', context)
def save_bet(request, game_id, mode): new_bet = Bet() game = Game.objects.get(pk=game_id) user = request.user new_bet.game = game new_bet.user = user if mode == "live": try: new_bet.home_ft_score = request.POST["value[home_ft_score]"] except: new_bet.home_ft_score = None try: new_bet.visitor_ft_score = request.POST["value[visitor_ft_score]"] except: new_bet.visitor_ft_score = None try: new_bet.winner = request.POST["value[winner]"] except: new_bet.winner = None else: try: new_bet.home_ft_score = request.POST["home_ft_score"] except: new_bet.home_ft_score = None try: new_bet.visitor_ft_score = request.POST["visitor_ft_score"] except: new_bet.visitor_ft_score = None try: new_bet.winner = request.POST["winner"] except: new_bet.winner = None new_bet.save() return HttpResponseRedirect("/")
def group_details(request): if request.user.is_authenticated and request.user.id != None: group_id = request.GET['group_id'] user = User.objects.get(id=request.user.id) group = Group.objects.get(id=group_id) if group.members.filter(id=user.id).exists() or group.owners.filter( id=user.id).exists(): allow_amount = request.user.groups.filter(name='allow_amount') all_users_ids = list(group.members.values_list( 'id', flat=True)) + list( group.owners.values_list('id', flat=True)) all_users = User.objects.filter( id__in=all_users_ids).order_by('id') all_matchs = group.event.matchs.all().order_by('when') all_bets = {} for match in all_matchs: match_bets = [] for a_user in all_users: bets = Bet.objects.filter(match__id=match.id, owner__id=a_user.id) if not bets.exists(): bet = Bet() bet.clean() bet.owner = a_user bet.match = match bet.when = datetime.datetime.now() bet.winner = None score = Score() score.name = match.name score.first = 0 score.second = 0 score.save() bet.result = score bet.save() match_bets.append(bet) else: match_bets.append(bets[0]) all_bets[match.name] = match_bets context = { 'all_bets': all_bets, 'all_users': all_users, 'all_matchs': all_matchs, 'today': datetime.date.today().strftime('%Y-%m-%d'), 'allow_amount': allow_amount } return render(request, 'group_details.html', context) raise PermissionDenied()
def index(request): now = datetime.datetime.today() begin = dt.combine(datetime.date.today(), dt.min.time()) end = dt.combine(dates.AddDay(begin, 14), dt.max.time()) all_dates = Match.objects.filter(when__gte=begin, when__lte=end).order_by('when').dates( 'when', 'day') all_dates = [a_date.strftime('%Y-%m-%d') for a_date in all_dates] active_events = BettableEvent.objects.filter( end_date__gte=datetime.date.today).order_by('name') if request.user.is_authenticated and request.user.id != None: user = User.objects.get(id=request.user.id) if get_user_meta(user) == None: initialize_user_meta(user) rankings = UserRanking.objects.filter(owner__id=user.id) if not rankings.exists(): initial_ranking = UserRanking() initial_ranking.owner = user initial_ranking.group = None initial_ranking.overall_score = 0 initial_ranking.rank = None initial_ranking.save() rankings = UserRanking.objects.filter(owner__id=user.id) global_ranking = UserRanking.objects.filter(owner__id=user.id, group=None) if global_ranking.exists(): global_ranking = global_ranking[0] else: global_ranking = None admin_groups = Group.objects.filter( Q(owners__id__exact=request.user.id)).distinct().order_by('name') member_groups = Group.objects.filter( Q(members__id__exact=request.user.id) | Q(owners__id__exact=request.user.id)).distinct().order_by('name') winner_setups = [] for group in list(admin_groups) + list(member_groups): setup = WinnerSetup.objects.filter(group__id=group.id, group__event__end_date__gte=now) if setup.exists(): setup = setup[0] all_steps = setup.setup.all() if all_steps.exists(): if not group.event.id in winner_setups: winner_setups.append(group.event.id) all_matches = Match.objects.filter(when__gte=begin, when__lte=end).order_by('when') all_bets = {} for match in all_matches: bet = Bet.objects.filter(owner__id=request.user.id, match__id=match.id) if bet.exists(): bet = bet[0] else: bet = Bet() bet.clean() bet.owner = user bet.match = match bet.when = datetime.datetime.now() bet.winner = None score = Score() score.name = match.name score.first = 0 score.second = 0 score.save() bet.result = score bet.save() all_bets[bet.match.id] = { 'id': bet.id, 'score': { 'first': bet.result.first, 'second': bet.result.second }, 'enabled': str(bet.match.when + datetime.timedelta(minutes=10) >= now).lower(), 'amount': bet.amount if bet.amount != None else 0 } allow_amount = request.user.groups.filter(name='allow_amount') context = { 'winner_setups': winner_setups, 'admin_groups': admin_groups, 'member_groups': member_groups, 'all_dates': all_dates, 'all_bets': all_bets, 'rankings': rankings, 'global_rank': global_ranking, 'events': active_events, 'allow_amount': allow_amount, 'events': active_events } else: context = { 'all_dates': all_dates, 'events': active_events, 'all_bets': [] } return render(request, 'index.html', context)