Beispiel #1
0
    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})
Beispiel #2
0
    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()