Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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())
Ejemplo n.º 3
0
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)
Ejemplo n.º 4
0
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)