def ldate(value, arg=None): "Formats a date according to the given format" if not value: return '' if arg is None: arg = settings.DATE_FORMAT return format(value, arg, get_language())
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.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.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 = {} #import locale #locale.setlocale(locale.LC_ALL, "ru_RU.UTF-8") from localdates.local_dateformat import format from django.utils.translation import get_language 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'] = format(next_game[0].datetime.date(), u"d-е {Fp} Y >>", get_language()) 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'] = format(last_game[0].datetime.date(), u"<< d-е {Fp} Y", get_language()) if page_links['prev'] < 0: page_links['caption_prev'] = None forecasts = [] if forecaster != None: for game in games: forecasts.append(create_game_info(game, forecaster)) import json resp = {} resp['games'] = [] from django.forms.models import model_to_dict for game in games: gamedict = model_to_dict(game) gamedict['datetime'] = gamedict['datetime'].__str__() resp['games'].append(gamedict) data = {'forecasts': forecasts, 'upcoming_page': True, 'page_links': page_links, 'user': request.user.username} dumped = json.dumps(data, cls=DjangoJSONEncoder) return HttpResponse(dumped, mimetype='application/json')