Beispiel #1
0
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
        })
Beispiel #2
0
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)
Beispiel #3
0
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', {})
Beispiel #4
0
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()
Beispiel #5
0
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
Beispiel #6
0
 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()
Beispiel #7
0
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)
Beispiel #8
0
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("/")
Beispiel #9
0
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()
Beispiel #10
0
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)