コード例 #1
0
    def test_searchByLevel(self):
        uc = User(username="******", password="******", email="*****@*****.**")
        ut = User(username="******", password="******", email="*****@*****.**")
        db.session.add(uc)
        db.session.add(ut)
        db.session.commit()

        w1 = Workout(user_id=uc.id, name="Work Out 1", level="Easy")
        db.session.add(w1)
        db.session.commit()
        w2 = Workout(user_id=uc.id, parent_user_id=ut.id, name="Work Out 2", is_public=False, level="Medium")
        db.session.add(w2)
        db.session.commit()
        w3 = Workout(user_id=uc.id, name="Work Out 3", level="Hard")
        db.session.add(w3)
        db.session.commit()
        w4 = Workout(user_id=uc.id, parent_user_id=ut.id, name="Work Out 4", is_public=False, level="Medium")
        db.session.add(w4)
        db.session.commit()

        workouts = Workout.searchByLevel("Easy")
        assert workouts[0].id == 1

        workouts = Workout.searchByLevel("Medium")
        assert workouts[0].id == 2
        assert workouts[1].id == 4

        workouts = Workout.searchByLevel("Hard")
        assert workouts[0].id == 3
コード例 #2
0
def submit_workout():
    exercises = request.data
    if(len(exercises) == 0):
        result = {"Result":"Failure: No JSON Data sent."}
	return jsonify(result)
    
    jsonExercises = json.loads(exercises)
    name = jsonExercises['name']
    description = jsonExercises['description']
    level = jsonExercises['level']

    isPublic = jsonExercises['isPublic']
    if isPublic == 'true':
        isPublic = True
    else:
        isPublic = False
    isLikeable = jsonExercises['isLikeable']
    if isLikeable == 'true':
        isLikeable = True
    else:
        isLikeable = False
    isCommentable = jsonExercises['isCommentable']
    if isCommentable == 'true':
        isCommentable = True
    else:
        isCommentable = False    

    user = g.user
    if user.is_anonymous():
        user = User.find_by_username("Guest")
    else:
        user.add_newsfeed("Has added a workout: " + name + "")
    if user is None:
        user = User.find_by_username("Guest")
        if user is None:
            user = User(username="******", password="******", email=None, firstname=None, lastname=None, location=None, sex=None, date_of_birth=None, avatar=None, about_me=None, last_seen=None)
            User.save_to_db(user)
        
    newWorkout = Workout(user_id=user.id, parent_user_id=user.id, name=name, level=level, 
                         is_public=isPublic, is_likeable=isLikeable, is_commentable=isCommentable, description=description)
    Workout.save_to_db(newWorkout)
    
    logging.warning("saving workout")
    for exercise in jsonExercises['exercises']:
        order = exercise['order']
        type = exercise['type']
        unit = exercise['unit']
        exerciseTag = ExerciseTag.find_by_name(type)
        if exerciseTag is None:
            exerciseTag = ExerciseTag(type, unit)
            ExerciseTag.save_to_db(exerciseTag)
        amount = exercise['amount']
        additionalInfo = exercise['additionalInfo']

        newExercise = Exercise(newWorkout.id, exerciseTag.id, order, amount, additionalInfo)
        Exercise.save_to_db(newExercise)
    
    result = {"Result":"Success"}
    return jsonify(result)
コード例 #3
0
    def test_getMostRecent(self):

        uc = User(username="******", password="******", email="*****@*****.**")
        ut = User(username="******", password="******", email="*****@*****.**")
        db.session.add(uc)
        db.session.add(ut)
        db.session.commit()

        list = Workout.getMostRecent(10)
        assert len(list) == 0

        w1 = Workout(user_id=uc.id, name="Work Out 1", level="Easy")
        w2 = Workout(user_id=uc.id, name="Work Out 2", level="Easy")
        db.session.add(w1)
        db.session.add(w2)
        db.session.commit()

        list = Workout.getMostRecent(10)
        assert len(list) == 2

        w3 = Workout(user_id=uc.id, name="Work Out 3", level="Easy")
        w4 = Workout(user_id=uc.id, name="Work Out 4", level="Easy")
        w5 = Workout(user_id=uc.id, name="Work Out 5", level="Easy")
        w6 = Workout(user_id=uc.id, name="Work Out 6", level="Easy")
        db.session.add(w3)
        db.session.add(w4)
        db.session.add(w5)
        db.session.add(w6)
        db.session.commit()

        list = Workout.getMostRecent(10)
        assert len(list) == 6

        w7 = Workout(user_id=uc.id, name="Work Out 7", level="Easy")
        w8 = Workout(user_id=uc.id, name="Work Out 8", level="Easy")
        w9 = Workout(user_id=uc.id, name="Work Out 9", level="Easy")
        w10 = Workout(user_id=uc.id, name="Work Out 10", level="Easy")
        w11 = Workout(user_id=uc.id, name="Work Out 11", level="Easy")
        w12 = Workout(user_id=uc.id, name="Work Out 12", level="Easy")
        db.session.add(w7)
        db.session.add(w8)
        db.session.add(w9)
        db.session.add(w10)
        db.session.add(w11)
        db.session.add(w12)
        db.session.commit()

        list = Workout.getMostRecent(10)
        assert len(list) == 10
コード例 #4
0
    def test_getSingleWorkoutByName(self):

        user = User(username="******", password="******", email="*****@*****.**")
        db.session.add(user)
        db.session.commit()

        w1 = Workout(user_id=user.id, name="Work Out 1", level="Easy")
        w2 = Workout(user_id=user.id, name="Work Out 2", level="Easy")
        db.session.add(w1)
        db.session.add(w2)
        db.session.commit()

        workoutName1 = Workout.find_single_workout_by_name_("Work Out 1")
        workoutName2 = Workout.find_single_workout_by_name_("Work Out 2")

        assert workoutName2.name == w2.name
        assert workoutName1.name == w1.name
コード例 #5
0
def get_workout_page():
    givenWorkoutName = request.args.get('name')
    
    workout = Workout.find_single_workout_by_name_(givenWorkoutName)
    if workout != None:
        workoutNameFound = Markup(workout.name)
        return render_template("workouts/workout.html", creatingNewWorkout = False, workoutName = workoutNameFound)
    else:
        return render_template("workouts/workout.html", creatingNewWorkout = True)
コード例 #6
0
def check_if_name_is_unique():
    workoutName = request.args.get('name', '')
    workout = Workout.find_single_workout_by_name_(workoutName)
    
    if workout is None:
        result = {"Result":"True"}
        return jsonify(result)
    else:
        result = {"Result":"False"}
        return jsonify(result)
コード例 #7
0
    def test_getNewest(self):
        user = User(username="******", password="******", email="*****@*****.**")
        db.session.add(user)
        db.session.commit()

        w1 = Workout(user_id=user.id, name="Newest Work Out 1", level="Easy")
        db.session.add(w1)
        db.session.commit()

        w = Workout.getNewest()
        assert w.name == w1.name
コード例 #8
0
def autocomplete_workouts():

    text = request.args.get('name_startsWith')
    maxRows = request.args.get('maxRows')
    workouts = Workout.find_by_starts_with(text)

    result = []
    for workout in workouts:
        result.append(workout.to_hash())
        
    w = {"workouts": result}
    return  jsonify(w)
コード例 #9
0
def get_single_workout():
    workoutName = request.args.get('name')
    
    if workoutName is None:
        id = request.args.get('id')
        workout = Workout.find_single_workout_by_id(id)
    else:
        workout = Workout.find_single_workout_by_name_(workoutName)
    if workout != None:
        workoutData = workout.to_hash()
        exercises = Exercise.find_all_by_workOutId(workout.id)
        
        exerciseData = []
        for exercise in exercises:
            exerciseData.append(exercise.to_hash())
        
        returnVal = {"Result": "Success", "workoutData": workoutData,"exerciseData": exerciseData}
        return  jsonify(returnVal)
    else:
        returnVal = {"Result": "Failure"}
        return  jsonify(returnVal)
def display_splash_contents():
    ret = Workout.getNewest()
    nWorkout = ret.to_hash()
    
    ret = User.getNewest()
    nuPic = ret.get_avatar(200)
    nUser = ret.to_hash()
    
    ret = User.find_by_id(8)
    mfPic = ret.get_avatar(200)
    mFollowed = ret.to_hash()
        
    w = {"Result":"OK", "nUser":nUser, "nuPic": nuPic,"nWorkout":nWorkout, "mostFollowed":mFollowed, "mfPic":mfPic}
    return jsonify(w)
コード例 #11
0
    def test_getParentWorkouts(self):
        uc = User(username="******", password="******", email="*****@*****.**")
        ut = User(username="******", password="******", email="*****@*****.**")
        db.session.add(uc)
        db.session.add(ut)
        db.session.commit()

        w1 = Workout(user_id=uc.id, name="Work Out 1")
        db.session.add(w1)
        db.session.commit()
        w2 = Workout(user_id=uc.id, parent_user_id=ut.id, name="Work Out 2")
        db.session.add(w2)
        db.session.commit()

        workouts = Workout.getParentWorkouts(ut.id)

        assert workouts[0].id == 2
def submit_workout_history():
    wName = request.form['wName']
    date = request.form['date']
    desc = request.form['desc']
    user = User.find_by_username(request.form['user'])
    workout = Workout.find_single_workout_by_name_(wName)
    if(workout == None):
        return jsonify(result="errorName", content=" The workout name you have entered may not exist. Please double check the spelling of the workout name. Thank you")
    if(date == ""):
        return jsonify(result="errorDate", content=" Please enter the date and time of the completed workout")
    
    wh = WorkoutHistory(user.id, workout.id, datetime.strptime(date, "%m/%d/%Y %I:%M:%S %p"), desc, True)
    WorkoutHistory.save_to_db(wh)
       
    feed = "comleted "+wName+" on "+date+" - "+desc;
    user.add_newsfeed(feed);
    return jsonify(result="success");
コード例 #13
0
def getWorkoutHistory():
    results = []
    uName = request.args.get('name')
    
    current_user = User.find_by_username(uName)
    if current_user is None:
        w = {"Result":"BAD"}
        return jsonify(w)
    
    completed = WorkoutHistory.get_completed_workouts(current_user.id)
    
    for item in completed:
        name = Workout.find_by_id(item.workout_id).name
        results.append(item.toHash(name))

    w = {"Result":"OK", "Contents":results, "User":current_user.username}
    return jsonify(w)
コード例 #14
0
def get_most_recent():
    imgURL = []
    
    imgURL.append(url_for('static', filename='imgs/fall1.jpg'));
    imgURL.append(url_for('static', filename='imgs/boat1.jpg'));
    imgURL.append(url_for('static', filename='imgs/lake1.jpg'));
    imgURL.append(url_for('static', filename='imgs/forrest1.jpg'));
    imgURL.append(url_for('static', filename='imgs/waterfall1.jpg'));
    imgURL.append(url_for('static', filename='imgs/fall2.jpg'));
    imgURL.append(url_for('static', filename='imgs/boat2.jpg'));
    imgURL.append(url_for('static', filename='imgs/lake2.jpg'));
    imgURL.append(url_for('static', filename='imgs/summer1.jpg'));
    imgURL.append(url_for('static', filename='imgs/winter1.jpg'));
    
    list = Workout.getMostRecent(len(imgURL))
    content = []
    for x in range(0, len(list)):
        content.append({'name':list[x].name,'description':list[x].description, "image":imgURL[x],"id":list[x].id})
    r = {"Result":"success", "Content":content}
    return jsonify(r);
コード例 #15
0
    def test_getPublicWorkouts(self):
        uc = User(username="******", password="******", email="*****@*****.**")
        ut = User(username="******", password="******", email="*****@*****.**")
        db.session.add(uc)
        db.session.add(ut)
        db.session.commit()

        w1 = Workout(user_id=uc.id, name="Work Out 1")
        db.session.add(w1)
        db.session.commit()
        w2 = Workout(user_id=uc.id, parent_user_id=ut.id, name="Work Out 2", is_public=False)
        db.session.add(w2)
        db.session.commit()
        w3 = Workout(user_id=uc.id, name="Work Out 3")
        db.session.add(w3)
        db.session.commit()
        w4 = Workout(user_id=uc.id, parent_user_id=ut.id, name="Work Out 4", is_public=False)
        db.session.add(w4)
        db.session.commit()

        workouts = Workout.getPublicWorkouts()

        assert workouts[0].id == 1
        assert workouts[1].id == 3
コード例 #16
0
def get_workouts():
    """
    {
    "Result":"OK",
    "Records":[
        {"WorkoutId":1,"Name":"Blah"},
        {"WorkoutId":2,"Name":"Lazy bones"},
        ]
    }
    """

    result = []
    workout_ids = []
    workouts = []

    if 'workout' in request.form:
        workouts = Workout.find_by_name(request.form['workout'])

        if workouts is not None:
            for workout in workouts:
                result.append(workout.to_search_query_hash())

    elif 'description' in request.form:
        workouts = Workout.find_by_description(request.form['description'])

        if workouts is not None:
            for workout in workouts:
                result.append(workout.to_search_query_hash())

    elif 'tag_auto' in request.form:
        tags = ExerciseTag.find_all_by_name(request.form['tag_auto'])

        if tags is not None:
            for tag in tags:

                for exercise in tag.exercises:
                    workout_ids.append(exercise.workOutId)

            #remove dupes
            workout_ids = set(workout_ids)

            for id in workout_ids:
                workouts.append(Workout.find_by_id(id))

            for workout in workouts:
                result.append(workout.to_search_query_hash())


    elif 'exercise' in request.form:
        tag = ExerciseTag.find_by_name(request.form['exercise'])

        if tag is not None:

            for exercise in tag.exercises:
                workout_ids.append(exercise.workOutId)
                
            #remove dupes
            workout_ids = set(workout_ids)

            for id in workout_ids:
                workouts.append(Workout.find_by_id(id))

            for workout in workouts:
                result.append(workout.to_search_query_hash())

    elif 'author' in request.form:

        authors = User.find_all_by_username(request.form['author'])

        if authors is not None:
            for author in authors:
                works = Workout.find_by_userid(author.id)
                if works is not None:
                    for work in works:
                        workouts.append(work)
            for workout in workouts:
                result.append(workout.to_search_query_hash())

    w = {"Result":"OK", "Records": result}

    return jsonify(w)
コード例 #17
0
def edit_workout():
    exercises = request.data
    
    if(len(exercises) == 0):
        result = {"Result":"Failure"}
        return jsonify(result)
    
    jsonExercises = json.loads(exercises)
    
    if jsonExercises == None:
        result = {"Result":"Failure"}
        return jsonify(result)
    else:
        if len(jsonExercises) == 0:
            result = {"Result":"Failure"}
            return jsonify(result)
        else:
            name = jsonExercises['name']
            description = jsonExercises['description']
            level = jsonExercises['level']

            isPublic = jsonExercises['isPublic']
            if isPublic == 'true':
                isPublic = True
            else:
                isPublic = False
            isLikeable = jsonExercises['isLikeable']
            if isLikeable == 'true':
                isLikeable = True
            else:
                isLikeable = False
            isCommentable = jsonExercises['isCommentable']
            if isCommentable == 'true':
                isCommentable = True
            else:
                isCommentable = False
            
            currentWorkout = Workout.find_single_workout_by_name_(name)
            currentWorkout.level = level
            currentWorkout.is_public = isPublic
            currentWorkout.is_likeable = isLikeable
            currentWorkout.is_commentable = isCommentable
            currentWorkout.description = description
            Workout.update_workout_info(currentWorkout)
            
            for exercise in jsonExercises['exercises']:
                order = exercise['order']
                type = exercise['type']
                unit = exercise['unit']
                exerciseTag = ExerciseTag.find_by_name(type)
                if exerciseTag is None:
                    exerciseTag = ExerciseTag(type, unit)
                    ExerciseTag.save_to_db(exerciseTag)
                amount = exercise['amount']
                additionalInfo = exercise['additionalInfo']
                
                currentExercise = Exercise.find_by_workOutId_and_order(currentWorkout.id, order)
                if currentExercise is None:
                    newExercise = Exercise(currentWorkout.id, exerciseTag.id, order, amount, additionalInfo)
                    Exercise.save_to_db(newExercise)
                else:
                    currentExercise.eTagId = exerciseTag.id
                    currentExercise.amount = amount
                    currentExercise.additionalInfo = additionalInfo
                    Exercise.update_exercise_info(currentExercise)
            
            result = {"Result":"Success"}
            return jsonify(result)