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
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')
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)
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')