Example #1
0
    def workout(self, workout_data):
        d = datetime.timedelta(hours=workout_data.duration.data.hour,
                               minutes=workout_data.duration.data.minute)

        intense_val = 1
        light_val = 0
        interval_val = 1
        endurance_val = 0

        if workout_data.intensity.data == 'light':
            intense_val = 0
            light_val = 1
        if workout_data.workout_type.data == 'endurance':
            interval_val = 0
            endurance_val = 1

        newWorkout = Workout(created=workout_data.date.data,
                             duration=d,
                             intense=intense_val,
                             light=light_val,
                             interval=interval_val,
                             endurance=endurance_val,
                             user_id=session['user_id'])
        db_session.add(newWorkout)
        db_session.commit()
Example #2
0
def post_Workout():
    form = NewWorkout()
    data = request.form
    workout = Workout(author=current_user.username,
                      name=data["Title"],
                      E1=data["Excercise1"],
                      E2=data["Excercise2"],
                      E3=data["Excercise3"],
                      E4=data["Excercise5"],
                      E5=data["Excercise5"],
                      S1=data["Sets1"],
                      S2=data["Sets2"],
                      S3=data["Sets3"],
                      S4=data["Sets4"],
                      S5=data["Sets5"],
                      R1=data["Reps1"],
                      R2=data["Reps2"],
                      R3=data["Reps3"],
                      R4=data["Reps4"],
                      R5=data["Reps5"])
    activity = Activity(name=current_user.username,
                        type='w',
                        topic=data["Title"])
    db.session.add(workout)
    db.session.add(activity)
    db.session.commit()

    return redirect(url_for("workouts"))
Example #3
0
def add_workout():
    if request.method == 'POST':
        user = User.query.filter_by(name=session['username']).first()
        workout = Workout(date=datetime.utcnow(), user_id=user.id)

        exercise_count = int(request.form['exercise_count'])
        for exercise_num in range(1, exercise_count + 1):
            exercise = Exercise(order=1,
                                exercise_id=request.form['exercise' +
                                                         str(exercise_num)],
                                workout=workout)
            weights = request.form.getlist('weight' + str(exercise_num))
            reps = request.form.getlist('reps' + str(exercise_num))

            set_order = 1
            for weight, rep in zip(weights, reps):
                work_set = Set(order=set_order,
                               exercise=exercise,
                               weight=weight,
                               reps=reps)
                set_order += 1

        db.session.add(workout)
        db.session.commit()
        return redirect(url_for('index'))

    exercises = Exercises.query.all()
    return render_template('add_workout.html', exercises=exercises)
Example #4
0
def add_workout():
    body = request.get_json()
    if 'age' not in body:
        return 'please specify age', 400
    if 'user_id' not in body:
        return 'please specify user id', 400
    if 'height' not in body:
        return 'please specify height', 400
    if 'weight' not in body:
        return 'please specify weight', 400
    if 'dedication' not in body:
        return 'please specify dedication', 400
    if 'goal_id' not in body:
        return 'please specify goal id', 400
    form = Form(age=body['age'],
                user_id=body['user_id'],
                height=body['height'],
                weight=body['weight'],
                dedication=body['dedication'],
                goal_id=body['goal_id'])
    workout = Workout(age=body['age'],
                      user_id=body['user_id'],
                      height=body['height'],
                      weight=body['weight'],
                      dedication=body['dedication'],
                      goal_id=body['goal_id'])
    db.session.add(form)
    db.session.commit()
    return jsonify(form.serialize()), 200
Example #5
0
def new_workout():

    """ Page for creating a new workout """

    if  not g.user:
        return redirect("/unauthorized")
    
    else:

        form = WorkoutForm()
    
        if form.validate_on_submit():

            new_workout = Workout(
                name = form.name.data,   
                date = form.date.data,   
                time = form.time.data,
                user_id = g.user.id
            )
            
            g.user.workouts.append(new_workout)
            db.session.commit()
            return redirect(url_for('view_workout',workout_id=new_workout.id))
    
    return render_template("workout/new.html",form=form)
    def test_user_workout(self):
        """Does workout get added to user? Then does a set get added to workout?"""

        test_workout = Workout(
            name = "test",
            date = "2021-01-01",
            time = 60
        )

        self.u.workouts.append(test_workout)

        db.session.commit()

        self.assertEqual(len(self.u.workouts), 1)

        test_set = Set(
            exercise="test_exercise",
            reps = 10,
            weight = 150,
            workoutid = test_workout.id
        )

        test_workout.sets.append(test_set)
        db.session.commit()

        self.assertEqual(len(self.u.workouts.sets), 1)
Example #7
0
def generate_workout(time):
    wo = Workout()
    for e in sample(exercises, len(exercises)):
        wo.exercises.append(e)
        if wo.get_total_time > time:
            wo.exercises.pop()
            break
    return wo
Example #8
0
def upload():
    failed = False

    # Need 'force=True' for file upload
    data = request.get_json(force=True)

    # So very, very insecure
    username = data.get('username')
    password = data.get('password')

    user = query_user(username, password)

    if user is None:
        return redirect(url_for('page_unauthorized'), 'No such user')

    action = data.get('action')

    user_key = user.key

    if action == 'workout':
        photo_url, blob_key = get_photo_url_and_blob_key()
        try:
            workout_dict = data.get('workout')
            new_workout = Workout(user_key=user_key,
                                  name=workout_dict.get('name'),
                                  blob_key=blob_key,
                                  photo_url=photo_url,
                                  text=workout_dict.get('text'),
                                  exercises=workout_dict.get('exercises'))
            new_workout.put()
        except:
            print("Failed to create new workout: {0}".format(
                sys.exc_info()[0]))
            failed = True
    elif action == 'stats':
        try:
            stats_dict = data.get('stats')
            new_stats = Stats(
                user_key=user_key,
                weight=stats_dict.get('weight'),
                height_inches=stats_dict.get('height_inches'),
                height_feet=stats_dict.get('height_feet'),
                body_fat=stats_dict.get('body_fat'),
            )
            new_stats.put()
        except:
            print("Failed to create new workout: {0}".format(
                sys.exc_info()[0]))
            failed = True
    else:
        return redirect(url_for('page_unauthorized'), 'No such operation')

    if failed:
        return "failed"
    return "success"
Example #9
0
def addWorkout():
  form = WorkoutForm()
  data = request.form()
  date = datetime.strptime(data["date], '%m/%d/%y')
  dur_min = int(data["duration_minutes"])  
  dur_sec = int(data["duration_seconds"])                              
  rec = Workout(title=data["title"], user_id=current_identity.id, date, split=data["split"], dur_min, dur_sec, description = data["description"], video=data["video"], audio=data["audio"], photo=data["photo"])
  db.session.add(rec)
  db.session.commit()
  Workouts = Workout.query.all()
  return render_template("gym-routine-app/my-workouts.html", workouts=Workouts)  
Example #10
0
def add_workout(request):
    if not request.user.is_authenticated():
        return redirect(index)
    elif request.method == 'POST':
        form = WorkoutForm(request.POST)
        name = request.POST['name']
        if form.is_valid():
            w = Workout(name=name, owner=request.user)
            w.save()
            return redirect(index)
    else:
        form = WorkoutForm()
    return render(request, 'add_workout.html', {'form': form})
Example #11
0
def create_workout(form, user_key=None, photo_url=None, blob_key=None):
    try:
        new_workout = Workout(user_key=user_key,
                              name=form.name.data,
                              blob_key=blob_key,
                              photo_url=photo_url,
                              exercises=form.workout_set.data)
        new_workout.put()
    except:
        print("Failed to create new workout: {0}".format(sys.exc_info()[0]))
        return None

    return new_workout
Example #12
0
def _parse_entry(entry):
    '''Parse workout data from the entry'''
    title = entry.title
    sport = _parse_title('[a-zA-Z\s]+', title)
    distance = float(_parse_title('[\.|\d]+\skm', title).split(' ')[0])
    duration_h = int(_parse_title('\d+\sh', title).split(' ')[0])
    duration_m = int(_parse_title('\d+\smin', title).split(' ')[0])
    duration_s = int(_parse_title('\d+\ss', title).split(' ')[0])
    duration = (duration_h * 3600) + (duration_m * 60) + duration_s
    date = mktime(entry.published_parsed)
    return Workout(sport=sport,
                   distance=distance,
                   duration=duration,
                   date=date)
Example #13
0
def add_workout():
    data = request.get_json()

    new_workout = Workout(uid=data['user_id'],
                          rid=data['rid'],
                          notes=data['notes'],
                          day=data['day'])

    db.session.add(new_workout)
    db.session.commit()

    return jsonify({
        'message': 'Workout added successfully!',
        'status': 200,
    })
Example #14
0
def indexCreate(request):
    s = set()
    s.add("name")
    s.add("age")
    s.add("dish")
    js2 = list(json.loads(request.body))
    for js in js2:
        js = dict(js)
        s1 = js.keys()
        s1 = set(s1)
        s2 = s - s1
        res = list(Workout.objects.filter(name=js['name']).values())

        ##################    For UPDATING the content and REJECTING if ALREADY FOUND    ##########################3

        if (len(res) != 0 and len(js) == 3):
            js1 = dict(res[0])
            js['id'] = js1['id']
            if (cmp(js, js1) == 0):
                dic = {}
                dic['message'] = "Content already Found"
                return JsonResponse(dic)
            else:
                Workout.objects.filter(id=js['id']).update(age=js['age'],
                                                           dish=js['dish'])
                dic = {}
                dic['message'] = "Content updated"
                return JsonResponse(dic, status=200)
        '''if(js.has_key('name')==False or  js.has_key('dish')==False or ja.has_key('age')==False):
            dic={}
            dic['message']="Contents Missing"
            return JsonResponse(dic,status=400)'''

        ####################        Finding the MISSING PARAMETERS           ##############################
        if (len(s2) != 0):
            dic = {}
            ans = ""
            for i in s2:
                ans += i + " "
            dic['message'] = ans + "Missing"
            return JsonResponse(dic, status=400)

        # All Conditions SATISFIED

        ob = Workout(name=js['name'], age=js['age'], dish=js['dish'])
        ob.save()

    return JsonResponse(successInsert(js2), status=201, safe=False)
Example #15
0
def post_workout():
    expected_fields = ['name', 'avg_hrt']

    if not request.is_json or not all(field in request.get_json()
                                      for field in expected_fields):
        return bad_request('Bad or missing data.')

    try:
        workout = Workout(request.get_json()['name'],
                          request.get_json()['avg_hrt'])

        db.session.add(workout)
        db.session.commit()
        return jsonify(workout.serialize), 201
    except:
        return server_error("Unable to create workout")
Example #16
0
def generate_workout(category_times, shuffled=True):
    wo = Workout()
    exc_list = []
    for cat, time in category_times:
        for i in count():
            cat_excercises = grouped_exercises[cat.id]
            exc = cat_excercises[i % len(cat_excercises)]
            if time > exc.time:
                exc_list.append(exc)
                time -= exc.time
            else:
                break

    if shuffled:
        exc_list = sample(exc_list, len(exc_list))

    assoc = set_association(wo, exc_list)
    return wo
Example #17
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})
Example #18
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()
Example #19
0
    def generate_workout(self, config):
        """
        :param config: Config object
        :return: A list of WorkoutExercises
        """
        wo = Workout()
        # Get whitelisted exercises
        exc_list = []
        whitelisted_exercises = (self.session.query(Exercise).filter(
            Exercise.id.in_(config.whitelisted_exercises)).all())
        blacklisted_exercises = (self.session.query(Exercise).filter(
            Exercise.id.in_(config.blacklisted_exercises)).all())
        # Add the whitelisted exercises first
        exc_list.extend(whitelisted_exercises)
        # Generate exercises per category time allotted excluding whitelisted exercises
        for cat_name, time in config.exercise_category_times.items():
            exc_for_cat = self.generate_exercises_for_category(
                cat_name, time, whitelisted_exercises, blacklisted_exercises)
            exc_list.extend(exc_for_cat)

        # Shuffle all the categories
        exc_list = sample(exc_list, len(exc_list))
        self.set_association(wo, exc_list)
        return wo
Example #20
0
    def __init__(self):
        if locale.getdefaultlocale()[0] == "en_US":
            language = "en"
            self.get_en_translation()
        else:
            language = "es"
            self.get_es_translation()

        Gtk.Window.__init__(self, title="IPM P1")
        self.set_default_size(700, 500)

        self.wk_grid = Gtk.Grid()
        self.wk_grid.set_column_homogeneous(True)
        self.wk_grid.set_row_spacing(20)
        self.wk_grid.set_column_spacing(20)

        self.scrolled_window = Gtk.ScrolledWindow()
        self.scrolled_window.set_border_width(10)
        self.add(self.scrolled_window)
        self.scrolled_window.add(self.wk_grid)

        # get collections from database
        self.workouts = define_connection('search_workouts', 'workouts')
        self.render_workouts()

        self.exercises = define_connection('search_exercises', 'exercises')
        self.render_exercises()

        self.all_exercises = []
        # make objects from all exercises in database
        for exercise_db in self.exercises:
            try:
                exercise = Exercise(exercise_db['_id'],
                                    exercise_db['description'],
                                    exercise_db['image'], exercise_db['name'],
                                    exercise_db['video'])
                self.all_exercises.append(exercise)
            except:
                pass

        self.all_workouts = []
        # make objects from all workouts in database
        exercises_not_in_db = []

        for index, workout_db in enumerate(self.workouts):
            workout = Workout(workout_db['_id'], workout_db['name'],
                              workout_db['description'], workout_db['image'])
            # attach proper exercises to the workout
            exercises_of_workout = []
            no = 1
            for workout_ex in workout_db['exercises']:
                found_exercise_in_db = False
                for exercise in self.all_exercises:
                    if found_exercise_in_db is False and workout_ex[
                            0] == exercise.name:
                        id_ = random.randint(1, 10000000)
                        found_exercise_in_db = True
                        ex_of_workout = ExerciseToWorkout(
                            id_, workout.id, exercise.id, workout_ex[1], no)
                        no = no + 1
                        exercises_of_workout.append(ex_of_workout)

                # if the exercise given with workout is not in the exercises colllection in database
                if found_exercise_in_db is False and len(
                        sys.argv) > 1 and sys.argv[1] == "1":
                    id_ = random.randint(1, 10000000)
                    exercise = Exercise(id_, "None", "None", workout_ex[0],
                                        "None")
                    exercises_not_in_db.append("{}".format(
                        str(json.dumps(exercise.__dict__))))
                    self.all_exercises.append(exercise)
                    ex_of_workout = ExerciseToWorkout(workout.id, exercise.id,
                                                      workout_ex[1], no)
                    no = no + 1
                    exercises_of_workout.append(ex_of_workout)

            # add list of exercises to the routine for faster displaying
            workout.set_exercises(exercises_of_workout)
            self.all_workouts.append(workout)

        if len(sys.argv) > 1 and sys.argv[1] == "1":
            result = define_connection("insert_ex",
                                       "{}".format(exercises_not_in_db))
            exercises_json = []
            for ex in exercises_of_workout:
                ex_json = json.dumps(ex.__dict__)
                exercises_json.append(ex_json)
            define_connection("insert_ex_to_wk", "{}".format(exercises_json))
        self.make_workouts_grid()
Example #21
0
from flask import Flask, jsonify, render_template, url_for, request