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})
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");
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)
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'