Ejemplo n.º 1
0
def create_game_info(game, forecaster):
    forecast = {}
    stats = {}
    forecast['kievdatetime'] = game.datetime + timedelta(hours=TIME_DIFFERENCE_HOURS)
    forecast['away_streak'], forecast['home_streak'] = get_team_streak(game)
    forecast['game'] = serializers.serialize('python', [game,])[0]
    forecast['away_team'] = serializers.serialize('python', [game.away_team,])[0]
    forecast['home_team'] = serializers.serialize('python', [game.home_team,])[0]
    forecast['num_comments'] = VVComment.objects.filter(object_id = getattr(game, 'pk'), content_type = ContentType.objects.get_for_model(game).id).count()
    #forecast['kievdatetime'] =
    try:
        forecast["forecast"] = Forecast.objects.get(game=game, forecaster=forecaster)
        if forecast["forecast"].winner == 'A':
            stats['span'] = '<img src="' + get_small_logo(game.away_team) + '" alt = "away" />'
        elif forecast["forecast"].winner == 'H':
            stats['span'] = '<img src="' + get_small_logo(game.home_team) + '" alt = "home" />'
        else:
            stats['span'] = _('NONE')
        forecast["forecast"] = serializers.serialize('python', [forecast['forecast'],])[0]
    except ObjectDoesNotExist:
        stats['span'] = _('NONE')
    stats['forecasts'] = Forecast.objects.filter(game=game).count()
    #stats['successes'] = Forecast.objects.filter(game = game, success = True).count()
    forecast['stats'] = stats.copy()
    return forecast
Ejemplo n.º 2
0
def prognose(request, game_number, home_away):
    home_away = int(home_away)
    winners = {1: 'H', 0: 'A', 2: 'u'}
    if request.user.is_authenticated():
        try:
            game = Game.objects.select_related('home_team', 'away_team').get(number=game_number)
        except ObjectDoesNotExist:
            return HttpResponse("ERROR: Game was not found!", mimetype='text/plain')
        home_aways = (0, 1, 2)
        if not home_away in home_aways:
            home_away = 0
        from datetime import timedelta

        hours = datetime.now() - timedelta(hours=TIME_DIFFERENCE_HOURS)  # make up to time zone difference
        if game.datetime < hours:
            return HttpResponse("ERROR: This game has already started!", mimetype='text/plain')
        else:
            forecaster = Forecaster.objects.get(username=request.user.username)
            forecast = Forecast.objects.get_or_create(game=game, forecaster=forecaster)
            if home_away == 'u':
                pass  #forecast[0].delete()
            else:
                forecast[0].winner = winners[home_away]
                forecast[0].save()
            if home_away == 0:
                retval = 'OK!<img src="' + get_small_logo(game.away_team) + '" alt = "away" />'
            elif home_away == 1:
                retval = 'OK!<img src="' + get_small_logo(game.home_team) + '" alt = "home" />'
            else:
                retval = 'OK!'
            return HttpResponse(retval, mimetype='text/plain')
    else:
        return HttpResponse("ERROR: You must be logged in to forecast!", mimetype='text/plain')
Ejemplo n.º 3
0
def prognose(request, game_number, home_away):
    home_away = int(home_away)
    winners = {1: 'H', 0: 'A', 2: 'u'}
    if request.user.is_authenticated():
        try:
            game = Game.objects.select_related('home_team', 'away_team').get(number=game_number)
        except ObjectDoesNotExist:
            result = { 'error': u'Игра не найдена!' }
            dumped = json.dumps(result, cls=DjangoJSONEncoder)
            return HttpResponse(dumped, mimetype='application/json', status=400)
            #return HttpResponse("ERROR: Game was not found!", mimetype='text/plain')
        home_aways = (0, 1, 2)
        if not home_away in home_aways:
            home_away = 0

        hours = datetime.now() - timedelta(hours=TIME_DIFFERENCE_HOURS)  # make up to time zone difference
        if game.datetime < hours:
            result = { 'error': u'Эта игра уже началась!' }
            dumped = json.dumps(result, cls=DjangoJSONEncoder)
            return HttpResponse(dumped, mimetype='application/json', status=400)
            #return HttpResponse("ERROR: This game has already started!", mimetype='text/plain')
        else:
            forecaster = Forecaster.objects.get(username=request.user.username)
            forecast = Forecast.objects.get_or_create(game=game, forecaster=forecaster)
            if home_away == 'u':
                pass  #forecast[0].delete()
            else:
                forecast[0].winner = winners[home_away]
                forecast[0].save()
            if home_away == 0:
                retval = 'OK!<img src="' + get_small_logo(game.away_team) + '" alt = "away" />'
            elif home_away == 1:
                retval = 'OK!<img src="' + get_small_logo(game.home_team) + '" alt = "home" />'
            else:
                retval = 'OK!'
            result = create_game_info(game, forecaster)
            dumped = json.dumps(result, cls=DjangoJSONEncoder)
            return HttpResponse(dumped, mimetype='application/json')
    else:
        result = { 'error': u'Вам необходимо войти на сайт, чтобы делать прогнозы!' }
        dumped = json.dumps(result, cls=DjangoJSONEncoder)
        return HttpResponse(dumped, mimetype='application/json', status=401)
Ejemplo n.º 4
0
def upcoming(request, ahead=0):
    if not request.user.is_authenticated():
        request.session.set_test_cookie()
    forecaster = None
    try:
        ahead = int(ahead)
    except:
        ahead = 0
    if request.user.is_authenticated:
        try:
            forecaster = Forecaster.objects.get(username=request.user.username)
        except:
            forecaster = None
    #Start usual upcoming games retrieval
    from datetime import timedelta

    hours = datetime.now() - timedelta(hours=TIME_DIFFERENCE_HOURS) + timedelta(
        days=ahead)  # make up to time zone difference
    first_game = Game.objects.filter(datetime__gte=hours, home_score__isnull=True)[0:1]
    if len(first_game) == 0:
        return render_to_response('upcoming.html',
                                  {'games': None, 'forecasts': None, 'upcoming_page': True, 'page_links': None},
                                  context_instance=RequestContext(request))
    day = timedelta(days=1)
    #games = Game.objects.filter(datetime__range=(first_game[0].datetime.date(), datetime.now().date() + day)).filter(home_score=None)
    #games = Game.objects.filter(datetime__range=(first_game[0].datetime, datetime.now() + day)).filter(home_score=None)
    games = Game.objects.select_related('home_team', 'away_team').filter(
        datetime__range=(first_game[0].datetime, first_game[0].datetime.date() + day)).filter(home_score=None)
    if Game.objects.filter(datetime__gte=first_game[0].datetime).filter(home_score=None).count() > 4:
        while len(games) < 4:
            day = day + timedelta(days=1)
            #games = Game.objects.filter(datetime__range=(first_game[0].datetime.date(), datetime.now().date() + day)).filter(home_score=None)
            games = Game.objects.select_related('home_team', 'away_team').filter(
                datetime__range=(first_game[0].datetime, first_game[0].datetime.date() + day)).filter(home_score=None)
    page_links = {}
    next_game = Game.objects.filter(datetime__gt=first_game[0].datetime.date() + timedelta(days=1))[0:1]
    if len(next_game) == 0:
        page_links['next'] = None
        page_links['caption_next'] = None
    else:
        page_links['next'] = (first_game[0].datetime - datetime.now() + timedelta(hours=TIME_DIFFERENCE_HOURS)).days + 1
        #page_links['caption_next'] = datetime.now().date() + timedelta(days=page_links['next'])
        page_links['caption_next'] = next_game[0].datetime.date()
    last_game = Game.objects.filter(datetime__lt=hours.date(), home_score=None).order_by('-datetime')[0:1]
    if len(last_game) == 0:
        page_links['prev'] = None
        page_links['caption_prev'] = None
    else:
        page_links['prev'] = (last_game[0].datetime.date() - datetime.now().date()).days
        page_links['caption_prev'] = last_game[0].datetime.date()
        if page_links['prev'] < 0:
            page_links['caption_prev'] = None
    forecasts = []
    stats = {}
    if forecaster != None:
        for game in games:
            forecast = {}
            game.kievdatetime = game.datetime + timedelta(hours=TIME_DIFFERENCE_HOURS)
            game.away_streak, game.home_streak = get_team_streak(game)
            forecast['game'] = game
            #forecast['kievdatetime'] =
            try:
                forecast["forecast"] = Forecast.objects.get(game=game, forecaster=forecaster)
                if forecast["forecast"].winner == 'A':
                    stats['span'] = '<img src="' + get_small_logo(game.away_team) + '" alt = "away" />'
                elif forecast["forecast"].winner == 'H':
                    stats['span'] = '<img src="' + get_small_logo(game.home_team) + '" alt = "home" />'
                else:
                    stats['span'] = _('NONE')
            except ObjectDoesNotExist:
                stats['span'] = _('NONE')
            stats['forecasts'] = Forecast.objects.filter(game=game).count()
            #stats['successes'] = Forecast.objects.filter(game = game, success = True).count()
            forecast['stats'] = stats.copy()
            forecasts.append(forecast)
    import json
    from django.core import serializers
    data = {'games': games, 'forecasts': forecasts, 'upcoming_page': True, 'page_links': page_links}
    #dumped = serializers.serialize("json", forecasts)
    dumped = json.dumps(page_links)
    return HttpResponse(dumped, mimetype='application/json')