def index(request, year=None, month=None, day=None): """ Diet index may be in three distinct states: * there's no diet introduced yet * there's a diet, but the starting day haven't been choosen * there's a diet and the starting day has been choosen """ try: today = get_today() requested_day = datetime.date(int(year),int(month),int(day)) if ( year or month or day ) else today yesterday = requested_day - datetime.timedelta(days=1) tommorow = requested_day + datetime.timedelta(days=1) diet = Diet.objects.get(user=request.user) if diet.start_date: # there's a diet and the starting day has been choosen days = [ diet.current_day_plan(requested_day + datetime.timedelta(days=i)) for i in range(3) ] no_diet = not any(days) return direct_to_template(request, 'diet/index.html', locals()) else: # there's a diet, but the starting day haven't been choosen days = diet.dayplan_set.all() return direct_to_template(request, 'diet/view.html', locals()) except Diet.DoesNotExist: #@UndefinedVariable # there's no diet introduced yet return direct_to_template(request, 'diet/no-diet-yet.html')
def index(request, mode = 'week'): today = get_today() if mode == 'week': graph_length = WEEK_LENGTH elif mode == 'month': graph_length = MONTH_LENGTH else: ''' WyĆwietlamy albo ostatnie 31 dni albo okres od rejestracji do dzisiaj ''' date_joined = request.user.date_joined graph_length = (today - datetime.date(date_joined.year, date_joined.month, date_joined.day)).days graph_length = max(MONTH_LENGTH, graph_length) return direct_to_template(request, 'graphs/index.html', locals())
def agregated_meal_data(request, mode = 'day', template_name = 'index.html'): """ shows shooping list for either X next days from ongoing diet or X first days from a not started diet """ meals = [] today = get_today() diet = get_object_or_404(Diet, user=request.user) day_range = 1 if mode is None or mode == 'day' else 7 if diet.start_date: # there's a diet and the starting day has been choosen days = [ diet.current_day_plan(today + datetime.timedelta(days=i)) for i in range(day_range) if diet.current_day_plan(today + datetime.timedelta(days=i)) is not None ] else: # there's a diet, but the starting day haven't been choosen days = diet.dayplan_set.filter(sequence_no__range=(1,day_range)) for d in days: meals.extend(d.meal_set.all()) shooping_list, shopping_list_other = agregate_and_preprocess_meal_data(meals) return direct_to_template(request, 'shopping/%s' % template_name, locals())
def index(request, year=None, month=None, day=None): try: diet = None day_plan = None today = get_today() requested_day = datetime.date(int(year),int(month),int(day)) if ( year or month or day ) else today if requested_day > today: raise DieterException("Can't show future") profile = request.user.get_profile() try: diet = Diet.objects.get(user=request.user) day_plan = diet.current_day_plan(requested_day) days_left = (diet.end_day() - today).days except Diet.DoesNotExist: #@UndefinedVariable pass yesterday = requested_day - datetime.timedelta(days=1) tommorow = requested_day + datetime.timedelta(days=1) if requested_day < today else None current_weight = request.user.get_profile().get_user_data(requested_day).weight diff_weight_1_week = profile.get_diff(today,"weight",1,"week") diff_bmi_1_week = profile.get_diff(today,"bmi",1,"week") diff_weight_1_month = profile.get_diff(today,"weight",1,"month") diff_bmi_1_month = profile.get_diff(today,"bmi",1,"month") return direct_to_template(request, "dashboard/index.html", extra_context = locals()) except ValueError: return redirect_to(request, reverse('dashboard')) except DieterException: return redirect_to(request, reverse('dashboard'))