def _generate_workouts(user, day_framework_collection): previous_workouts = WorkoutCollection.get_existing_workouts_for_user(user, cutoff_future_workouts=True) user.workout_logger.log_previous_workouts(previous_workouts) new_workouts = [] start_isoweekday = datetime.datetime.utcnow().isoweekday() ordered_isoweekdays = [iso % 7 for iso in range(start_isoweekday, start_isoweekday + 7)] for day_index in ordered_isoweekdays: user.workout_logger.log_day(day_index) workout_components = day_framework_collection.get_workout_components_for_day_index(day_index) day_framework_id = day_framework_collection.get_id_for_day_index(day_index) cardio_level = day_framework_collection.get_cardio_for_day_index(day_index) workout = _generate_workout(day_framework_id, user, workout_components, cardio_level, list(reversed(previous_workouts))) previous_workouts.append(workout) new_workouts.append(workout) return new_workouts
def workout(request, user=None): ''' return a week's worth of data for the user ''' if not user: return render_to_json({}, status=400) utc_offset = int(request.GET.get('utc_offset', 0)) timezone = get_timezone_from_utc_offset_minutes(utc_offset) try: workout_collection = WorkoutCollection.for_user(user, timezone) except NeedsNewWorkoutsException: try: workout_collection = generate_new_workouts(user) except NoGoalSetException: return render_to_json({ "redirect": "!goal/return" }, status=ResponseCodes.REDIRECT_REQUIRED) return render_to_json(workout_collection.to_json())
def _update_user(request, user=None, access_token=None): field_to_function = { 'goal_id': _update_goal, 'age': _update_age, 'gender': _update_gender, 'equipment_ids': _update_equipment_ids, 'enabled_days': _update_available_days, 'minutes_per_day': _update_minutes_per_day, 'fitness_level': _update_fitness_level, 'experience': _update_experience } post_data = request.POST or json.loads(request.body) for field, function in field_to_function.items(): if function is None: continue if field in post_data: function(user, post_data[field]) if WorkoutCollection.workouts_exist_for_user(user): generate_new_workouts(user, move_to_next_week=False) return render_to_json({"access_token": access_token}, status=200)
def _get_user(request, user=None): if not user: return render_to_json({}, status=400) user_json = user.to_json() user_json["has_workouts"] = WorkoutCollection.workouts_exist_for_user(user) return render_to_json(user_json)