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")
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 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
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")
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
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'))
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
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
def test_empty_password(self): u = User(username = '******', password = "", email = '*****@*****.**') assert User.save_to_db(u) == False assert len(User.all()) == 0
def test_empty_username(self): u = User(username = '', password = "******", email = '*****@*****.**') assert User.save_to_db(u) == False assert len(User.all()) == 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