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())
Beispiel #2
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.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')