def test_all_goals_no_exceptions(self): # with open("output.json", "w+") as f: total = 0 bad = 0 for fitness_level in xrange(1, 6): for experience in xrange(1, 6): for goal_id in Goal.IDS: _, user = User.get_or_create_by_username("workoutdude%s_%s_%s" % (fitness_level, experience, goal_id)) # user = User.get_or_create_by_username("workoutdude%s" % goal_id) user.update_goal_id(goal_id) user.update_fitness_level(fitness_level) user.update_experience(experience) # for week_count in xrange(10): if True: user.move_to_next_week() workout_collection = generate_new_workouts(user) for workout in workout_collection.get_existing_workouts_for_user(user): total += 1 empty_cardio = workout.cardio_session is None empty_exercises = len(workout._get_workout_component_to_exercises()) == 0 if empty_cardio and empty_exercises: # problem here: the database is populated with a # framework, but exercises empty I guess print "EMPTY DATA" bad += 1 # raise ValueError("there's empty data") # import json # f.write(json.dumps(workout_collection.to_json(), indent=4)) print "%s/%s" % (bad, total)
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 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 test_generate_workouts(self): _, user = User.get_or_create_by_username("workoutdude") user.update_goal_id(1) user.move_to_next_week() workout_collection = generate_new_workouts(user)