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)
def new_measurement(username):
    m = json.loads(request.data)
    if g.user.is_authenticated() and g.user.username == username:
        user = User.find_by_username(username)
        dt = datetime.strptime(m["measurement_date"], "%m/%d/%Y %H:%M")
        user_measurement = UserMeasurement(
            user_id=g.user.id,
            type=m["measurement_type"],
            value=m["measurement_value"],
            unit=m["measurement_unit"],
            date=dt,
        )
        UserMeasurement.save_to_db(user_measurement)
        User.add_newsfeed(
            user,
            "Has added a new measurement "
            + user_measurement.type
            + ": "
            + str(user_measurement.value)
            + " "
            + user_measurement.unit,
        )
        return user_measurement.to_json()
    else:
        return json.dumps({"error": "User " + username + " is not logged in"})
def login():
    form = LoginForm(csrf_enabled=False)
    if g.user is not None and g.user.is_authenticated():
        if(request_wants_json()):
            return g.user.to_json();
        else:
            return redirect(url_for('home_index'))

    if request.method == 'GET':
        return render_template('users/login.html',
            title = 'Sign In',
            form = form)
    elif request.method == 'POST':
        if form.validate_on_submit():
            login_user(form.user)
            flash("Login successful")
            session['username'] = form.username.data
            user = User.find_by_username(form.username.data)
            if(request_wants_json()):
                return user.to_json();
            else:
                return redirect(request.args.get("next") or url_for("home_index"))
        else:
            if(request_wants_json()):
                return form.to_json();
            else:
                return render_template('users/login.html',
                    title = 'Sign In',
                    form = form)
def measurement_summary(username):
    user = User.find_by_username(username)
    if user != None:
        measurements = UserMeasurement.latest_measurement_for_each_type_by_user(user.id)
        result = []
        for measurement in measurements:
            result.append(measurement.to_hash())

        return jsonify({"measurements": result})
Beispiel #5
0
    def validate(self):
        valid_form = Form.validate(self)
        if not valid_form:
            return False

        user = User.find_by_username(self.username.data)
        if user != None:
            self.username.errors.append('Username ' + self.username.data + ' is already taken')
            return False
        return True
def user_measurement(username, measurement_type):
    if request_wants_json():
        user = User.find_by_username(username)
        result = []
        if user != None:
            measurements = UserMeasurement.measurement_history_by_user(user.id, measurement_type)
            for measurement in measurements:
                result.append(measurement.to_hash())
            return jsonify({"measurements": result})
    else:
        return render_template(
            "user_measurements/measurement_history.html", target_user=username, target_measurement=measurement_type
        )
def display_user_profile(username, page=1):
    user = User.find_by_username(username)
    posts = None
    if not request_wants_json():
        if user == None:
            return render_template("users/user.html", user = user, posts = posts) #user not found
        if g.user.is_authenticated() and g.user.id == user.id:
            if user.firstname == None or user.firstname == "" or user.lastname == None or user.lastname == "" or user.email == None or user.email == "":
                flash("We can't display your profile until you have filled out the form")
                return render_template("users/update_info.html")
            posts = g.user.followed_posts().paginate(page, 10, False)
    else:
        if user == None:
            return json.dumps({"Error": "User not found."})
        return user.to_json() 
    return render_template("users/user.html", user = user, posts = posts)
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)
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");
Beispiel #10
0
    def validate(self):
        valid_form = Form.validate(self)
        if not valid_form:
            return False

        user = User.find_by_username(self.username.data)
        if user is None:
            #self.username.errors.append('User does not exist!')
            flash("User does not exist!", "error")
            self.username.errors.append('User does not exist!') 
            return False
        if not user.valid_password(self.password.data):
            flash('Invalid password!', "error")
            self.password.errors.append('Invalid Password')
            return False
        self.user = user
        return True
def display_user_workout_history (username):
    user = User.find_by_username(username)
    return render_template("users/workout_history.html", user=user)
Beispiel #12
0
 def test_retrieve_user(self):
     u = User(username = '******', password = "******", email = '*****@*****.**')
     db.session.add(u)
     db.session.commit()
     user = User.find_by_username('andy')
     assert user.username == 'andy'