def new_user():
    if request.headers['Content-Type'] == 'application/json':
        form = RegistrationForm.from_json(request.json, csrf_enabled=False)
    else:
        form = RegistrationForm()

    if request.method == 'GET':
        return render_template('users/new.html', form=form)
    elif request.method == 'POST':
        if form.validate():
            user = User(form.username.data,
                        form.password.data)
            User.save_to_db(user)
            user = user.follow(user)
            User.add_newsfeed(user,"Has joined Lumberjack.")
            flash("Registration Successful!")
            if request.headers['Content-Type'] == 'application/json':
                return user.to_json()
            else:
                login_user(user);
                session['username'] = form.username.data
                return redirect(url_for('display_user_profile',
                    username=user.username))
        else:
            if request.headers['Content-Type'] == 'application/json':
                return form.to_json()
            else:
                return render_template('users/new.html', form=form)
def update_info():
    if request.method == 'POST':
        if not request_wants_json():
            user = User.find_by_id(g.user.id)
        else:
            user = User.find_by_id(request.form['uid'])
        user.firstname = request.form['firstname']
        user.lastname = request.form['lastname']
        user.email = request.form['email']
        email_user = User.find_by_email(user.email)
        if not request_wants_json():
            if email_user != None and email_user.id != g.user.id:
                flash("Our record shows that you have an account under the given email address already.")
                return render_template("users/update_info.html")
        else:
            if email_user != None and str(email_user.id) != request.form['uid']:
                ret = {"result": "Email address already exist."}
                return json.dumps(ret)
        if len(request.form['gender']) > 0:
            user.sex = request.form['gender'][0].upper()
        user.location = request.form['location']
        user.date_of_birth = request.form['date_of_birth']
        user.avatar = request.form['gravatar']
        user.about_me = request.form['about-me']
        User.save_to_db(user)
        if request_wants_json():
            ret = {"result": "OK"}
            return json.dumps(ret)
        flash('Your changes have been made!')
    return render_template("users/update_info.html")
Exemplo n.º 3
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)
Exemplo n.º 4
0
    def test_inserting_duplicate_username(self):
        u = User(username = '******', password = "******", email =
                '*****@*****.**')
        User.save_to_db(u);
        u2 = User(username = '******', password = "******", email =
                '*****@*****.**')

        assert User.save_to_db(u2) == False
        assert len(User.all()) == 1
Exemplo n.º 5
0
    def test_find_all_by_user_id(self):
        u = User(username = '******', password = "******", email = '*****@*****.**')
        another_user = User(username = '******', password = "******", email = '*****@*****.**')
        User.save_to_db(u)
        User.save_to_db(another_user)
        measurement1 = UserMeasurement(user_id=1, type="distance ran", value=2, unit="miles")
        measurement2 = UserMeasurement(user_id=1, type="distance ran", value=5, unit="miles")
        measurement3 = UserMeasurement(user_id=2, type="distance ran", value=23, unit="miles")

        UserMeasurement.save_to_db(measurement1)
        UserMeasurement.save_to_db(measurement2)
        UserMeasurement.save_to_db(measurement3)
        u_measurements = UserMeasurement.find_all_by_user_id(u.id)
        assert len(u_measurements) == 2
def follow_btn():
    followee = request.args.get('followee', '', type=int)
    state = request.args.get('state', '', type=str)
    user = User.find_by_id(followee)    
    if state.startswith("Follow"):
        follower = g.user.follow(user)
        User.save_to_db(follower)
        if g.user.is_following(user):
            return jsonify(result="Unfollow") #g.user successfully followed user. So, we must change the state of the button
        else:
            return jsonify(resul="error") #we could return 'Follow' to just keep the state. But returning 'error' will say that something went wrong. Could be a database problem.
    follower = g.user.unfollow(user)
    User.save_to_db(follower)
    if not g.user.is_following(user):
        return jsonify(result="Follow") #g.user successfully unfollowed user
    else:
        return jsonify(result="error")
Exemplo n.º 7
0
    def test_measurement_history_by_user(self):
        u = User(username = '******', password = "******", email = '*****@*****.**')
        bieber = User(username = '******', password = "******", email = '*****@*****.**')
        User.save_to_db(u)
        User.save_to_db(bieber)
        measurement_list = []
        measurement_list.append(UserMeasurement(user_id=1, type="distance ran", value=2, unit="miles", date=datetime.now()))
        u_latest_distance_ran =datetime.now() + timedelta(minutes =10)
        measurement_list.append(UserMeasurement(user_id=1, type="distance ran", value=5, unit="miles", date=u_latest_distance_ran))
        measurement_list.append(UserMeasurement(user_id=1, type="distance ran", value=23, unit="miles",date=datetime.now() + timedelta(minutes =15)))
        for measurement in measurement_list:
            UserMeasurement.save_to_db(measurement)

        u_measurements = UserMeasurement.measurement_history_by_user(u.id, "distance ran")
        beiber_measurements = UserMeasurement.measurement_history_by_user(bieber.id, "distance ran")

        assert len(u_measurements) == 3
        assert len(beiber_measurements) == 0
        
        u_measurements_types = [m.type for m in u_measurements]
        assert len(set(u_measurements_types)) == 1
Exemplo n.º 8
0
def after_login(resp):
    if resp.email is None or resp.email == "":
        flash('Invalid login. Please try again.')
        redirect(url_for('login'))
    user = User.find_by_email(resp.email)
    user_name = session['username']
    if user is None:
        user = User(user_name = user_name, email = resp.email, password = "******")
        User.save_to_db(user)
    else:
        if user.user_name != user_name:
            flash('Username does not match open id. Try again.')
            return redirect(url_for('login'))

    session.pop('username', None)
    remember_me = False
    if 'remember_me' in session:
        remember_me = session['remember_me']
        session.pop('remember_me', None)
    login_user(user, remember = remember_me)
    return redirect(request.args.get('next') or url_for('index'))
Exemplo n.º 9
0
    def test_find_all(self):
        u = User(username = '******', password = "******", email =
                '*****@*****.**')
        User.save_to_db(u)
        u = User(username = '******', password = "******", email =
                '*****@*****.**')
        User.save_to_db(u)
        u = User(username = '******', password = "******", email =
                '*****@*****.**')
        User.save_to_db(u)

        assert len(User.all()) == 3
Exemplo n.º 10
0
    def test_get_latest_measurement_for_each_type_by_user(self):
        u = User(username = '******', password = "******", email = '*****@*****.**')
        bieber = User(username = '******', password = "******", email = '*****@*****.**')
        another_user = User(username = '******', password = "******", email = '*****@*****.**')
        User.save_to_db(u)
        User.save_to_db(another_user)
        User.save_to_db(bieber)

        measurement_list = []
        measurement_list.append(UserMeasurement(user_id=1, type="distance ran", value=2, unit="miles", date=datetime.now()))
        u_latest_distance_ran =datetime.now() + timedelta(minutes =10)
        measurement_list.append(UserMeasurement(user_id=1, type="distance ran", value=5, unit="miles", date=u_latest_distance_ran))
        measurement_list.append(UserMeasurement(user_id=2, type="distance ran", value=23, unit="miles",date=datetime.now() + timedelta(minutes =15)))
        measurement_list.append(UserMeasurement(user_id=1, type="height", value=5, unit="cm", date=datetime.now()))
        u_latest_height = date=datetime.now() + timedelta(minutes =3)
        measurement_list.append(UserMeasurement(user_id=1, type="height", value=5, unit="cm", date=u_latest_height))
        u_latest_weight = datetime.now() + timedelta(minutes = 20)
        measurement_list.append(UserMeasurement(user_id=1, type="weight", value=23, unit="lbs", date=u_latest_weight))

        for measurement in measurement_list:
            UserMeasurement.save_to_db(measurement)

        u_measurements = UserMeasurement.latest_measurement_for_each_type_by_user(u.id)
        assert len(u_measurements) == 3

        u_measurements_types = [m.type for m in u_measurements]
        assert len(u_measurements_types) == len(set(u_measurements_types))

        for m in u_measurements:
            if m.type == "distance ran":
                u_dist_ran = m
            elif m.type == "height":
                u_height = m
            elif m.type == "weight":
                u_weight = m

        assert u_dist_ran.date == u_latest_distance_ran
        assert u_height.date == u_latest_height
        assert u_weight.date == u_latest_weight
Exemplo n.º 11
0
 def test_empty_password(self):
     u = User(username = '******', password = "", email =
             '*****@*****.**')
     assert User.save_to_db(u) == False
     assert len(User.all()) == 0
Exemplo n.º 12
0
 def test_empty_username(self):
     u = User(username = '', password = "******", email =
             '*****@*****.**')
     assert User.save_to_db(u) == False
     assert len(User.all()) == 0
Exemplo n.º 13
0
 def test_find_by_id(self):
     u = User(username = '******', password = "******", email =
             '*****@*****.**')
     User.save_to_db(u)
     user = User.find_by_id(1)
     assert user != None