def create_workout(): try: all_data = request.get_json() name = all_data['name'] focus = all_data['focus'] repeat = all_data['repeat'] if 'exercises' in all_data.keys(): exercises = all_data['exercises'] else: exercises = None for value in [name, focus, repeat]: if value is None: abort(400) workout = Workout(name=name, focus=focus, repeat=repeat) except Exception: abort(400) if exercises is None: # insert Workout with no WorkoutExercises rows try: workout.insert() except Exception: abort(400) else: # insert Workout, get id, then create WorkoutExercises rows try: workout.insert_without_commit() for exercise in exercises: e_id = Exercise.query.filter( Exercise.name == exercise['name']).first().id workout_exercise = WorkoutExercise( workout_id=workout.id, exercise_id=e_id, sets=exercise['sets'], reps=exercise['reps'], weight=exercise['weight']) workout_exercise.insert_without_commit() workout.update() except Exception: abort(404) return jsonify({'success': True, 'id': workout.id})
def setUp(self): """ Define test variables and initialize app Has to be in this awkward camelCase to overload method in TestCase """ self.app = create_app() self.client = self.app.test_client self.database_path = os.environ['HEROKU_POSTGRESQL_AQUA_URL'] setup_db(self.app, self.database_path) # binds the app to the current context with self.app.app_context(): # populate tables with test values e1 = Exercise( name='kb swing', equipment='kettlebell', target='reps', link='dummy link' ) e2 = Exercise( name='kb goblet squat', equipment='kettlebell', target='reps', link='another dummy link here' ) e1.insert() e2.insert() w = Workout( name='test workout', focus='legs', repeat=False ) w.insert() m = WorkoutExercise( workout_id=1, exercise_id=1, sets=3, reps=8, weight=4 ) m.insert()