def overview(request, username=None): ''' Shows a plot with the weight data More info about the D3 library can be found here: * https://github.com/mbostock/d3 * http://d3js.org/ ''' is_owner, user = check_access(request.user, username) template_data = {} min_date = WeightEntry.objects.filter(user=user).\ aggregate(Min('date'))['date__min'] max_date = WeightEntry.objects.filter(user=user).\ aggregate(Max('date'))['date__max'] if min_date: template_data['min_date'] = 'new Date(%(year)s, %(month)s, %(day)s)' % \ {'year': min_date.year, 'month': min_date.month, 'day': min_date.day} if max_date: template_data['max_date'] = 'new Date(%(year)s, %(month)s, %(day)s)' % \ {'year': max_date.year, 'month': max_date.month, 'day': max_date.day} last_weight_entries = helpers.get_last_entries(user) template_data['is_owner'] = is_owner template_data['owner_user'] = user template_data['show_shariff'] = is_owner template_data['last_five_weight_entries_details'] = last_weight_entries return ua_aware_render(request, 'overview.html', template_data)
def overview(request, username=None): ''' Shows a plot with the weight data More info about the D3 library can be found here: * https://github.com/mbostock/d3 * http://d3js.org/ ''' is_owner, user = check_access(request.user, username) template_data = {} min_date = WeightEntry.objects.filter(user=user).\ aggregate(Min('date'))['date__min'] max_date = WeightEntry.objects.filter(user=user).\ aggregate(Max('date'))['date__max'] if min_date: template_data['min_date'] = 'new Date(%(year)s, %(month)s, %(day)s)' % \ {'year': min_date.year, 'month': min_date.month, 'day': min_date.day} if max_date: template_data['max_date'] = 'new Date(%(year)s, %(month)s, %(day)s)' % \ {'year': max_date.year, 'month': max_date.month, 'day': max_date.day} last_weight_entries = helpers.get_last_entries(user) template_data['is_owner'] = is_owner template_data['owner_user'] = user template_data['show_shariff'] = is_owner template_data['last_five_weight_entries_details'] = last_weight_entries return render(request, 'overview.html', template_data)
def comparison(request, username=None): """ Shows a comparison of user's weight with another selected user """ is_owner, user = check_access(request.user, username) users = list( User.objects.filter(~Q(username=request.user.username), Q(weightentry__id__isnull=False)).distinct()) template_data = {} min_date = WeightEntry.objects.filter(user=user).\ aggregate(Min('date'))['date__min'] max_date = WeightEntry.objects.filter(user=user).\ aggregate(Max('date'))['date__max'] if min_date: template_data['min_date'] = 'new Date(%(year)s, %(month)s, %(day)s)' % \ {'year': min_date.year, 'month': min_date.month, 'day': min_date.day} if max_date: template_data['max_date'] = 'new Date(%(year)s, %(month)s, %(day)s)' % \ {'year': max_date.year, 'month': max_date.month, 'day': max_date.day} last_weight_entries = helpers.get_last_entries(user) template_data['is_owner'] = is_owner template_data['users'] = users template_data['owner_user'] = user template_data['show_shariff'] = is_owner template_data['last_five_weight_entries_details'] = last_weight_entries return render(request, 'comparison.html', template_data)
def dashboard(request): ''' Show the index page, in our case, the last workout and nutritional plan and the current weight ''' template_data = {} # Load the last workout, either from a schedule or a 'regular' one (current_workout, schedule) = Schedule.objects.get_current_workout( request.user) template_data['current_workout'] = current_workout template_data['schedule'] = schedule # Load the last nutritional plan, if one exists try: plan = NutritionPlan.objects.filter( user=request.user).latest('creation_date') except ObjectDoesNotExist: plan = False template_data['plan'] = plan # Load the last logged weight entry, if one exists try: weight = WeightEntry.objects.filter(user=request.user).latest('date') except ObjectDoesNotExist: weight = False template_data['weight'] = weight template_data['last_weight_entries'] = get_last_entries(request.user) # Format a bit the days so it doesn't have to be done in the template used_days = {} if current_workout: for day in current_workout.day_set.select_related(): for day_of_week in day.day.select_related(): used_days[day_of_week.id] = day.description week_day_result = [] for week in DaysOfWeek.objects.all(): day_has_workout = False if week.id in used_days: day_has_workout = True week_day_result.append((_(week.day_of_week), used_days[week.id], True)) if not day_has_workout: week_day_result.append((_(week.day_of_week), _( 'Rest {0}'.format(get_label(week.training_cycle))), False)) template_data['weekdays'] = week_day_result if plan: # Load the nutritional info template_data['nutritional_info'] = plan.get_nutritional_values() return render(request, 'index.html', template_data)
def dashboard(request): ''' Show the index page, in our case, the last workout and nutritional plan and the current weight ''' template_data = {} # Load the last workout, either from a schedule or a 'regular' one (current_workout, schedule) = Schedule.objects.get_current_workout(request.user) template_data['current_workout'] = current_workout template_data['schedule'] = schedule # Load the last nutritional plan, if one exists try: plan = NutritionPlan.objects.filter(user=request.user).latest('creation_date') except ObjectDoesNotExist: plan = False template_data['plan'] = plan # Load the last logged weight entry, if one exists try: weight = WeightEntry.objects.filter(user=request.user).latest('date') except ObjectDoesNotExist: weight = False template_data['weight'] = weight template_data['last_weight_entries'] = get_last_entries(request.user) # Format a bit the days so it doesn't have to be done in the template used_days = {} if current_workout: for day in current_workout.day_set.select_related(): for day_of_week in day.day.select_related(): used_days[day_of_week.id] = day.description week_day_result = [] for week in DaysOfWeek.objects.all(): day_has_workout = False if week.id in used_days: day_has_workout = True week_day_result.append((_(week.day_of_week), used_days[week.id], True)) if not day_has_workout: week_day_result.append((_(week.day_of_week), _('Rest day'), False)) template_data['weekdays'] = week_day_result if plan: # Load the nutritional info template_data['nutritional_info'] = plan.get_nutritional_values() return render(request, 'index.html', template_data)
def dashboard(request): ''' Show the index page, in our case, the last workout and nutritional plan and the current weight ''' template_data = {} fitbit = request.GET.get('code') if fitbit: fitbituser = FitbitUser() fitbituser.authenticate(request.user) print(fitbit) fitbituser.completeAuth(fitbit) return HttpResponseRedirect( reverse('weight:overview', kwargs={'username': request.user.username}) + "?fitbit=true") # Load the last workout, either from a schedule or a 'regular' one (current_workout, schedule) = Schedule.objects.get_current_workout(request.user) template_data['current_workout'] = current_workout template_data['schedule'] = schedule # Load the last nutritional plan, if one exists try: plan = NutritionPlan.objects.filter( user=request.user).latest('creation_date') except ObjectDoesNotExist: plan = False template_data['plan'] = plan # Load the last logged weight entry, if one exists try: weight = WeightEntry.objects.filter(user=request.user).latest('date') except ObjectDoesNotExist: weight = False template_data['weight'] = weight template_data['last_weight_entries'] = get_last_entries(request.user) # Format a bit the days so it doesn't have to be done in the template used_days = {} if current_workout: for day in current_workout.day_set.select_related(): for day_of_week in day.day.select_related(): used_days[day_of_week.id] = day.description week_day_result = [] for week in DaysOfWeek.objects.all(): day_has_workout = False if week.id in used_days: day_has_workout = True week_day_result.append( (_(week.day_of_week), used_days[week.id], True)) if not day_has_workout: week_day_result.append((_(week.day_of_week), _('Rest day'), False)) template_data['weekdays'] = week_day_result if plan: # Load the nutritional info template_data['nutritional_info'] = plan.get_nutritional_values() return render(request, 'index.html', template_data)