def delete_user(): user = User.objects(email=current_user.email).first() posts = Post.objects(author=current_user.id) user.delete() posts.delete() flash("Account has been deleted", "success") return redirect(url_for("users.register"))
def change_password(): change_form = ChangePasswordForm() if change_form.validate_on_submit(): oldpassword = change_form.old_password.data newpassword = change_form.password.data user = User.objects(username = session['username']).first() if user : if oldpassword == newpassword : flash("New password can not be same the old password") return redirect(url_for("user.change_password")) elif oldpassword != user.password: flash("Incorrect Password") return redirect(url_for("user.change_password")) else : user.change_password(oldpassword, newpassword) user.save() flash("Your password has been successfully changed.") return redirect(url_for("user.profile")) return render_template('user/change_password.html' , form = change_form )
def edit_user(): edit_form = EditUserInfoForm() if request.method == "GET": #set values in the form edit_form.first_name.data = session['firstname'] edit_form.last_name.data = session['lastname'] edit_form.biography.data = session['biography'] if edit_form.validate_on_submit(): new_firstname = edit_form.first_name.data new_lastname = edit_form.last_name.data new_bio = edit_form.biography.data user = User.objects(username = session["username"]).first() user.first_name = new_firstname user.last_name = new_lastname user.biography = new_bio user.save() session['firstname'] = new_firstname session['lastname'] = new_lastname session['biography'] = new_bio return redirect('/profile') return render_template("user/edituser.html", form = edit_form)
def login(): login_form = LoginForm() if login_form.validate_on_submit(): # read values from the login wtform username = login_form.username.data password = login_form.password.data user = User.objects(username=username).first() # if user != None: # check if credentials are valid if user and user.authenticate(username, password): # store the user ID in the session session['uid'] = str(user.id) session['username'] = user.username session['firstname'] = user.first_name session['lastname'] = user.last_name session['biography'] = user.biography session['role'] = user.role return redirect("/profile") # render the login template return render_template('login/login.html', form=login_form)
def validate_username(self, username): if username.data != current_user.username: existing_user = User.objects(username=username.data).first() if existing_user: raise ValidationError( "This username is already taken. Please choose another one." )
def profile(): user = User.objects(username = session['uid']) posts = Post.objects(author = session['uid']).order_by('-created') flash('You were successfully logged in') return render_template("user/profile.html", user = user, posts = posts )
def login(): login_form = LoginForm() if login_form.validate_on_submit(): # Login User if User exists in database and credentials are correct. user = User.objects(email=login_form.email.data.lower()).first() if user and bcrypt.check_password_hash(user.password, login_form.password.data): login_user(user) flash("You are logged in.", "success") return redirect(url_for("main.home")) else: flash("Login unsuccessful. Check email and password.", "danger") return render_template("users/login.html", title="Login", form=login_form)
def create_post(): create_post_form = CreateOrUpdatePostForm() author = User.objects(id=current_user.id).first() if create_post_form.validate_on_submit(): # Creating new Post. new_post = Post(title=create_post_form.title.data, content=create_post_form.content.data, author=author) # Saving Post to database. new_post.save() return redirect(url_for("main.home")) return render_template("posts/create_or_update_post.html", form=create_post_form, legend="New Post", title="New Post")
def login(): if current_user.is_authenticated: return redirect(url_for("main.home")) form = LoginForm() if form.validate_on_submit(): user = User.objects(email=form.email.data).first() if user and bcrypt.check_password_hash(user.password, form.password.data): login_user(user, remember=form.remember.data) next_page = request.args.get("next") flash("Logged in sucsessfuly", "success") return redirect(next_page) if next_page \ else redirect(url_for('main.home')) else: flash('Login Unsuccessful. Please check email and password', 'danger') return render_template("users/login.html", title="Login", form=form)
def comment_post(post_id): page = request.args.get("page", 1, type=int) post = Post.objects.get_or_404(id=post_id) comments = Comment.objects(post=post).order_by("-date").paginate( page=page, per_page=2) comment_form = CommentForm() comment_author = User.objects(id=current_user.id).first() if comment_form.validate_on_submit(): new_comment = Comment(author=comment_author, post=post, content=comment_form.content.data) new_comment.save() return redirect(url_for("posts.comment_post", post_id=post_id)) return render_template("posts/comment_post.html", post=post, form=comment_form, comments=comments, title="Post")
def validate_email(self, email): if email.data != current_user.email: user = User.objects(email=email.data).first() if user is not None: raise ValidationError("Email already used!")
def validate_username(self, username): if username.data != current_user.username: user = User.objects(username=username.data).first() if user is not None: raise ValidationError("Username already used!")
def delete_user(username): User.objects(username = username).first().delete() return redirect(url_for("user.get_users"))
def user_posts(username): page = request.args.get('page', 1, type=int) user = User.objects(username=username).first_or_404() posts = Post.objects(author=user.id).order_by("-date_posted").paginate( page=page, per_page=2) return render_template("users/user_posts.html", posts=posts, user=user)
def validate_email(self, email): existing_user = User.objects(email=email.data.lower()).first() if existing_user: raise ValidationError( "This email is already taken. Please choose another one.")