def import_workout(request): if request.POST and request.FILES: json_file = request.FILES['csv_file'].file data = json_file.read() workouts = json.loads(data.decode('utf8').replace("'", '"')) for workout in workouts: # create workouts new_workout = Workout( creation_date=workouts[workout]['creation_date'], comment=workouts[workout]["comment"], user=request.user) new_workout.save() # if workout has workout days then create days if 'workout_days' in workouts[workout]: day = Day(training=new_workout, description=workouts[workout]["description"]) day.save() for day_name in workouts[workout]["workout_days"]: day.day.add( DaysOfWeek.objects.filter( day_of_week=day_name).first()) # if workout days has exercises then create them if 'exercises' in workouts[workout]: one_set = Set(exerciseday=day) one_set.save() for exercise in workouts[workout]["exercises"]: one_set.exercises.add( Exercise.objects.filter(name=exercise).first()) messages.success(request, _('workout(s) import was successful')) return HttpResponseRedirect(reverse('manager:workout:overview'))
def import_workouts(request): if request.POST and request.FILES: csvfile = TextIOWrapper(request.FILES['csv_file'].file, encoding="utf-8") reader = csv.DictReader(csvfile) workouts = [] for row in reader: workouts.append(dict(row)) for each_workout in workouts: workout = Workout(creation_date=each_workout["Date created"], comment=each_workout["Comment"], user=request.user) workout.save() day = Day(training=workout, description=each_workout["Description"]) day.save() for day_name in each_workout["Days"].split("\n"): day.day.add( DaysOfWeek.objects.filter(day_of_week=day_name).first()) one_set = Set(exerciseday=day) one_set.save() for exercise in each_workout["Exercise"].split("\n"): one_set.exercises.add( Exercise.objects.filter(name=exercise).first()) return HttpResponseRedirect(reverse('manager:workout:overview'))
def add(request): ''' Add a new workout and redirect to its page ''' workout = Workout() workout.user = request.user workout.save() return HttpResponseRedirect(workout.get_absolute_url())
def create_workout(self, user): ''' Helper function ''' workout = Workout() workout.user = user workout.save() return workout
def create_workout(self, user): """ Helper function """ workout = Workout() workout.user = user workout.save() return workout
def add(request): ''' Add a new workout and redirect to its page ''' workout = Workout() workout.user = request.user workout.save() return HttpResponseRedirect(reverse('workout-view', kwargs={'id': workout.id}))
def test_unicode(self): """ Test the unicode representation """ workout = Workout() workout.creation_date = datetime.date.today() self.assertEqual('{0}'.format(workout), '{0} ({1})'.format('Workout', datetime.date.today())) workout.name = 'my description' self.assertEqual('{0}'.format(workout), 'my description')
def test_unicode(self): ''' Test the unicode representation ''' workout = Workout() workout.creation_date = datetime.date.today() self.assertEqual('{0}'.format(workout), '{0} ({1})'.format(u'Workout', datetime.date.today())) workout.comment = u'my description' self.assertEqual('{0}'.format(workout), u'my description')
def test_get_workout_export(self): ''' Helper function to test the workout export ''' # Login default user self.user_login() # Create new work out workout = Workout() workout.user = User.objects.get(pk=1) workout.save() response = self.client.get(reverse('manager:workout:export')) # Test successful creation of json file self.assertEqual(response.status_code, 200) self.assertEquals( response.get('Content-Disposition'), 'attachment; filename=user-' + str(1) + '-workouts.json')
def add(request): ''' Add a new workout and redirect to its page ''' cycle = request.GET.get('cycle', None) training_cycles = { 'micro': 'microcycle', 'meso': 'mesocycle', 'macro': 'macrocycle' } workout = Workout(cycle_kind=training_cycles.get(cycle, 'micro')) workout.user = request.user workout.save() return HttpResponseRedirect(workout.get_absolute_url())
if hasattr(args, 'number_workouts'): print("** Generating {0} workouts per user".format(args.number_workouts)) if args.add_to_user: userlist = [User.objects.get(pk=args.add_to_user)] else: userlist = [i for i in User.objects.all()] for user in userlist: print(' - generating for {0}'.format(user.username)) # Workouts for i in range(1, args.number_workouts): uid = str(uuid.uuid4()).split('-') workout = Workout(user=user, comment='Dummy workout - {0}'.format(uid[1])) workout.save() # Select a random number of workout days nr_of_days = random.randint(1, 5) day_list = [i for i in range(1, 8)] random.shuffle(day_list) # Load all exercises to a list exercise_list = [i for i in Exercise.objects.filter(language_id=2)] for day in day_list[0:nr_of_days]: uid = str(uuid.uuid4()).split('-') weekday = DaysOfWeek.objects.get(pk=day) day = Day(training=workout, description='Dummy day - {0}'.format(uid[0]))
if args.add_to_user: userlist = [User.objects.get(pk=args.add_to_user)] else: userlist = [i for i in User.objects.all()] for user in userlist: print(' - generating for {0}'.format(user.username)) # Workouts for i in range(1, args.number_workouts): uid = str(uuid.uuid4()).split('-') start_date = datetime.date.today() - datetime.timedelta( days=random.randint(0, 100)) workout = Workout(user=user, comment='Dummy workout - {0}'.format(uid[1]), creation_date=start_date) workout.save() # Select a random number of workout days nr_of_days = random.randint(1, 5) day_list = [i for i in range(1, 8)] random.shuffle(day_list) # Load all exercises to a list exercise_list = [i for i in Exercise.objects.filter(language_id=2)] for day in day_list[0:nr_of_days]: uid = str(uuid.uuid4()).split('-') weekday = DaysOfWeek.objects.get(pk=day)
def create_demo_entries(user): ''' Creates some demo data for temporary users ''' # (this is a bit ugly and long...) language = load_language() # # Workout and exercises # setting_list = [] weight_log = [] workout = Workout(user=user, comment=_('Sample workout')) workout.save() monday = DaysOfWeek.objects.get(pk=1) wednesday = DaysOfWeek.objects.get(pk=3) day = Day(training=workout, description=_('Sample day')) day.save() day.day.add(monday) day2 = Day(training=workout, description=_('Another sample day')) day2.save() day2.day.add(wednesday) # Biceps curls with dumbbell if language.short_name == 'de': exercise = Exercise.objects.get(pk=26) else: exercise = Exercise.objects.get(pk=81) day_set = Set(exerciseday=day, sets=4, order=2) day_set.save() day_set.exercises.add(exercise) setting = Setting(set=day_set, exercise=exercise, reps=8, order=1) setting.save() # Weight log entries for reps in (8, 10, 12): for i in range(1, 8): log = WorkoutLog(user=user, exercise=exercise, workout=workout, reps=reps, weight=18 - reps + random.randint(1, 4), date=datetime.date.today() - datetime.timedelta(weeks=i)) weight_log.append(log) # French press if language.short_name == 'de': exercise = Exercise.objects.get(pk=25) else: exercise = Exercise.objects.get(pk=84) day_set = Set(exerciseday=day, sets=4, order=2) day_set.save() day_set.exercises.add(exercise) setting_list.append(Setting(set=day_set, exercise=exercise, reps=8, order=1)) # Weight log entries for reps in (7, 10): for i in range(1, 8): log = WorkoutLog(user=user, exercise=exercise, workout=workout, reps=reps, weight=30 - reps + random.randint(1, 4), date=datetime.date.today() - datetime.timedelta(weeks=i)) weight_log.append(log) # Squats if language.short_name == 'de': exercise = Exercise.objects.get(pk=6) else: exercise = Exercise.objects.get(pk=111) day_set = Set(exerciseday=day, sets=4, order=3) day_set.save() day_set.exercises.add(exercise) setting_list.append(Setting(set=day_set, exercise=exercise, reps=10, order=1)) # Weight log entries for reps in (5, 10, 12): for i in range(1, 8): log = WorkoutLog(user=user, exercise=exercise, workout=workout, reps=reps, weight=110 - reps + random.randint(1, 10), date=datetime.date.today() - datetime.timedelta(weeks=i)) weight_log.append(log) # Crunches if language.short_name == 'de': exercise = Exercise.objects.get(pk=4) else: exercise = Exercise.objects.get(pk=91) day_set = Set(exerciseday=day, sets=4, order=4) day_set.save() day_set.exercises.add(exercise) setting_list.append(Setting(set=day_set, exercise=exercise, reps=30, order=1)) setting_list.append(Setting(set=day_set, exercise=exercise, reps=99, order=2)) setting_list.append(Setting(set=day_set, exercise=exercise, reps=35, order=3)) # Leg raises, supersets with crunches if language.short_name == 'de': exercise = Exercise.objects.get(pk=35) else: exercise = Exercise.objects.get(pk=126) day_set.exercises.add(exercise) setting_list.append(Setting(set=day_set, exercise=exercise, reps=30, order=1)) setting_list.append(Setting(set=day_set, exercise=exercise, reps=40, order=2)) setting_list.append(Setting(set=day_set, exercise=exercise, reps=99, order=3)) Setting.objects.bulk_create(setting_list) # Save all the log entries WorkoutLog.objects.bulk_create(weight_log) # # (Body) weight entries # temp = [] existing_entries = [i.date for i in WeightEntry.objects.filter(user=user)] for i in range(1, 20): creation_date = datetime.date.today() - datetime.timedelta(days=i) if creation_date not in existing_entries: entry = WeightEntry(user=user, weight=80 + 0.5 * i + random.randint(1, 3), date=creation_date) temp.append(entry) WeightEntry.objects.bulk_create(temp) # # Nutritional plan # plan = NutritionPlan() plan.user = user plan.language = language plan.description = _('Sample nutrional plan') plan.save() # Breakfast meal = Meal() meal.plan = plan meal.order = 1 meal.time = datetime.time(7, 30) meal.save() # Oatmeal if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8197) else: ingredient = Ingredient.objects.get(pk=2126) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 1 mealitem.amount = 100 mealitem.save() # Milk if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8198) else: ingredient = Ingredient.objects.get(pk=154) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 2 mealitem.amount = 100 mealitem.save() # Protein powder if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8244) else: ingredient = Ingredient.objects.get(pk=196) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 3 mealitem.amount = 30 mealitem.save() # # 11 o'clock meal meal = Meal() meal.plan = plan meal.order = 2 meal.time = datetime.time(11, 0) meal.save() # Bread, in slices if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8225) unit = None amount = 80 else: ingredient = Ingredient.objects.get(pk=5370) unit = IngredientWeightUnit.objects.get(pk=9874) amount = 2 mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.weight_unit = unit mealitem.order = 1 mealitem.amount = amount mealitem.save() # Turkey if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8201) else: ingredient = Ingredient.objects.get(pk=1643) mealitem = MealItem() mealitem.meal = meal mealitem.order = 2 mealitem.ingredient = ingredient mealitem.amount = 100 mealitem.save() # Cottage cheese if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8222) # TODO: check this! else: ingredient = Ingredient.objects.get(pk=17) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 3 mealitem.amount = 50 mealitem.save() # Tomato, one if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8217) unit = None amount = 120 else: ingredient = Ingredient.objects.get(pk=3208) unit = IngredientWeightUnit.objects.get(pk=5950) amount = 1 mealitem = MealItem() mealitem.meal = meal mealitem.weight_unit = unit mealitem.ingredient = ingredient mealitem.order = 4 mealitem.amount = amount mealitem.save() # # Lunch (leave empty so users can add their own ingredients) meal = Meal() meal.plan = plan meal.order = 3 meal.time = datetime.time(13, 0) meal.save() # # Workout schedules # # create some empty workouts to fill the list workout2 = Workout(user=user, comment=_('Placeholder workout nr {0} for schedule').format(1)) workout2.save() workout3 = Workout(user=user, comment=_('Placeholder workout nr {0} for schedule').format(2)) workout3.save() workout4 = Workout(user=user, comment=_('Placeholder workout nr {0} for schedule').format(3)) workout4.save() schedule = Schedule() schedule.user = user schedule.name = _('My cool workout schedule') schedule.start_date = datetime.date.today() - datetime.timedelta(weeks=4) schedule.is_active = True schedule.is_loop = True schedule.save() # Add the workouts step = ScheduleStep() step.schedule = schedule step.workout = workout2 step.duration = 2 step.order = 1 step.save() step = ScheduleStep() step.schedule = schedule step.workout = workout step.duration = 4 step.order = 2 step.save() step = ScheduleStep() step.schedule = schedule step.workout = workout3 step.duration = 1 step.order = 3 step.save() step = ScheduleStep() step.schedule = schedule step.workout = workout4 step.duration = 6 step.order = 4 step.save() # # Add two more schedules, to make the overview more interesting schedule = Schedule() schedule.user = user schedule.name = _('Empty placeholder schedule') schedule.start_date = datetime.date.today() - datetime.timedelta(weeks=15) schedule.is_active = False schedule.is_loop = False schedule.save() step = ScheduleStep() step.schedule = schedule step.workout = workout2 step.duration = 2 step.order = 1 step.save() schedule = Schedule() schedule.user = user schedule.name = _('Empty placeholder schedule') schedule.start_date = datetime.date.today() - datetime.timedelta(weeks=30) schedule.is_active = False schedule.is_loop = False schedule.save() step = ScheduleStep() step.schedule = schedule step.workout = workout4 step.duration = 2 step.order = 1 step.save()
def create_demo_entries(user): """ Creates some demo data for temporary users """ # (this is a bit ugly and long...) language = load_language() # # Workout and exercises # setting_list = [] weight_log = [] workout = Workout(user=user, name=_('Sample workout')) workout.save() monday = DaysOfWeek.objects.get(pk=1) wednesday = DaysOfWeek.objects.get(pk=3) day = Day(training=workout, description=_('Sample day')) day.save() day.day.add(monday) day2 = Day(training=workout, description=_('Another sample day')) day2.save() day2.day.add(wednesday) # Biceps curls with dumbbell if language.short_name == 'de': exercise = Exercise.objects.get(pk=26) else: exercise = Exercise.objects.get(pk=81) day_set = Set(exerciseday=day, sets=4, order=2) day_set.save() setting = Setting(set=day_set, exercise=exercise, reps=8, order=1) setting.save() # Weight log entries for reps in (8, 10, 12): for i in range(1, 8): log = WorkoutLog(user=user, exercise=exercise, workout=workout, reps=reps, weight=18 - reps + random.randint(1, 4), date=datetime.date.today() - datetime.timedelta(weeks=i)) weight_log.append(log) # French press if language.short_name == 'de': exercise = Exercise.objects.get(pk=25) else: exercise = Exercise.objects.get(pk=84) day_set = Set(exerciseday=day, sets=4, order=2) day_set.save() setting_list.append( Setting(set=day_set, exercise=exercise, reps=8, order=1)) # Weight log entries for reps in (7, 10): for i in range(1, 8): log = WorkoutLog(user=user, exercise=exercise, workout=workout, reps=reps, weight=30 - reps + random.randint(1, 4), date=datetime.date.today() - datetime.timedelta(weeks=i)) weight_log.append(log) # Squats if language.short_name == 'de': exercise = Exercise.objects.get(pk=6) else: exercise = Exercise.objects.get(pk=111) day_set = Set(exerciseday=day, sets=4, order=3) day_set.save() setting_list.append( Setting(set=day_set, exercise=exercise, reps=10, order=1)) # Weight log entries for reps in (5, 10, 12): for i in range(1, 8): log = WorkoutLog(user=user, exercise=exercise, workout=workout, reps=reps, weight=110 - reps + random.randint(1, 10), date=datetime.date.today() - datetime.timedelta(weeks=i)) weight_log.append(log) # Crunches if language.short_name == 'de': exercise = Exercise.objects.get(pk=4) else: exercise = Exercise.objects.get(pk=91) day_set = Set(exerciseday=day, sets=4, order=4) day_set.save() setting_list.append( Setting(set=day_set, exercise=exercise, reps=30, order=1)) setting_list.append( Setting(set=day_set, exercise=exercise, reps=99, order=2)) setting_list.append( Setting(set=day_set, exercise=exercise, reps=35, order=3)) # Leg raises, supersets with crunches if language.short_name == 'de': exercise = Exercise.objects.get(pk=35) else: exercise = Exercise.objects.get(pk=126) setting_list.append( Setting(set=day_set, exercise=exercise, reps=30, order=1)) setting_list.append( Setting(set=day_set, exercise=exercise, reps=40, order=2)) setting_list.append( Setting(set=day_set, exercise=exercise, reps=99, order=3)) Setting.objects.bulk_create(setting_list) # Save all the log entries WorkoutLog.objects.bulk_create(weight_log) # # (Body) weight entries # temp = [] existing_entries = [i.date for i in WeightEntry.objects.filter(user=user)] for i in range(1, 20): creation_date = datetime.date.today() - datetime.timedelta(days=i) if creation_date not in existing_entries: entry = WeightEntry(user=user, weight=80 + 0.5 * i + random.randint(1, 3), date=creation_date) temp.append(entry) WeightEntry.objects.bulk_create(temp) # # Nutritional plan # plan = NutritionPlan() plan.user = user plan.language = language plan.description = _('Sample nutrional plan') plan.save() # Breakfast meal = Meal() meal.plan = plan meal.order = 1 meal.time = datetime.time(7, 30) meal.save() # Oatmeal if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8197) else: ingredient = Ingredient.objects.get(pk=2126) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 1 mealitem.amount = 100 mealitem.save() # Milk if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8198) else: ingredient = Ingredient.objects.get(pk=154) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 2 mealitem.amount = 100 mealitem.save() # Protein powder if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8244) else: ingredient = Ingredient.objects.get(pk=196) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 3 mealitem.amount = 30 mealitem.save() # # 11 o'clock meal meal = Meal() meal.plan = plan meal.order = 2 meal.time = datetime.time(11, 0) meal.save() # Bread, in slices if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8225) unit = None amount = 80 else: ingredient = Ingredient.objects.get(pk=5370) unit = IngredientWeightUnit.objects.get(pk=9874) amount = 2 mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.weight_unit = unit mealitem.order = 1 mealitem.amount = amount mealitem.save() # Turkey if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8201) else: ingredient = Ingredient.objects.get(pk=1643) mealitem = MealItem() mealitem.meal = meal mealitem.order = 2 mealitem.ingredient = ingredient mealitem.amount = 100 mealitem.save() # Cottage cheese if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8222) # TODO: check this! else: ingredient = Ingredient.objects.get(pk=17) mealitem = MealItem() mealitem.meal = meal mealitem.ingredient = ingredient mealitem.order = 3 mealitem.amount = 50 mealitem.save() # Tomato, one if language.short_name == 'de': ingredient = Ingredient.objects.get(pk=8217) unit = None amount = 120 else: ingredient = Ingredient.objects.get(pk=3208) unit = IngredientWeightUnit.objects.get(pk=5950) amount = 1 mealitem = MealItem() mealitem.meal = meal mealitem.weight_unit = unit mealitem.ingredient = ingredient mealitem.order = 4 mealitem.amount = amount mealitem.save() # # Lunch (leave empty so users can add their own ingredients) meal = Meal() meal.plan = plan meal.order = 3 meal.time = datetime.time(13, 0) meal.save() # # Workout schedules # # create some empty workouts to fill the list workout2 = Workout( user=user, name=_('Placeholder workout nr {0} for schedule').format(1)) workout2.save() workout3 = Workout( user=user, name=_('Placeholder workout nr {0} for schedule').format(2)) workout3.save() workout4 = Workout( user=user, name=_('Placeholder workout nr {0} for schedule').format(3)) workout4.save() schedule = Schedule() schedule.user = user schedule.name = _('My cool workout schedule') schedule.start_date = datetime.date.today() - datetime.timedelta(weeks=4) schedule.is_active = True schedule.is_loop = True schedule.save() # Add the workouts step = ScheduleStep() step.schedule = schedule step.workout = workout2 step.duration = 2 step.order = 1 step.save() step = ScheduleStep() step.schedule = schedule step.workout = workout step.duration = 4 step.order = 2 step.save() step = ScheduleStep() step.schedule = schedule step.workout = workout3 step.duration = 1 step.order = 3 step.save() step = ScheduleStep() step.schedule = schedule step.workout = workout4 step.duration = 6 step.order = 4 step.save() # # Add two more schedules, to make the overview more interesting schedule = Schedule() schedule.user = user schedule.name = _('Empty placeholder schedule') schedule.start_date = datetime.date.today() - datetime.timedelta(weeks=15) schedule.is_active = False schedule.is_loop = False schedule.save() step = ScheduleStep() step.schedule = schedule step.workout = workout2 step.duration = 2 step.order = 1 step.save() schedule = Schedule() schedule.user = user schedule.name = _('Empty placeholder schedule') schedule.start_date = datetime.date.today() - datetime.timedelta(weeks=30) schedule.is_active = False schedule.is_loop = False schedule.save() step = ScheduleStep() step.schedule = schedule step.workout = workout4 step.duration = 2 step.order = 1 step.save()
userlist = [User.objects.get(pk=args.add_to_user)] else: userlist = User.objects.all() for user in userlist: print(' - generating for {0}'.format(user.username)) # Workouts for i in range(1, args.number_workouts): uid = str(uuid.uuid4()).split('-') start_date = datetime.date.today() - datetime.timedelta( days=random.randint(0, 100)) workout = Workout( user=user, name='Dummy workout - {0}'.format(uid[1]), creation_date=start_date, ) workout.save() # Select a random number of workout days nr_of_days = random.randint(1, 5) day_list = [i for i in range(1, 8)] random.shuffle(day_list) # Load all exercises to a list exercise_list = [i for i in Exercise.objects.filter(language_id=2)] for day in day_list[0:nr_of_days]: uid = str(uuid.uuid4()).split('-') weekday = DaysOfWeek.objects.get(pk=day)