diff --git a/app/dashboard/views/setting.py b/app/dashboard/views/setting.py index e5845f1f..0196763a 100644 --- a/app/dashboard/views/setting.py +++ b/app/dashboard/views/setting.py @@ -49,8 +49,12 @@ def setting(): if request.method == "POST": if request.form.get("form-name") == "update-profile": if form.validate(): + profile_updated = False # update user info - current_user.name = form.name.data + if form.name.data != current_user.name: + current_user.name = form.name.data + db.session.commit() + profile_updated = True if form.profile_picture.data: file_path = random_string(30) @@ -64,12 +68,17 @@ def setting(): LOG.d("upload file %s to s3", file) current_user.profile_picture_id = file.id - db.session.flush() + db.session.commit() + profile_updated = True - db.session.commit() - flash(f"Your profile has been updated", "success") + if profile_updated: + flash(f"Your profile has been updated", "success") - if form.email.data and form.email.data != current_user.email: + if ( + form.email.data + and form.email.data != current_user.email + and not pending_email + ): new_email = form.email.data # check if this email is not used by other user, or as alias @@ -94,6 +103,10 @@ def setting(): ) db.session.commit() send_change_email_confirmation(current_user, email_change) + flash( + "A confirmation email is on the way, please check your inbox", + "success", + ) elif request.form.get("form-name") == "change-password": send_reset_password_email(current_user) @@ -138,8 +151,6 @@ def send_change_email_confirmation(user: User, email_change: EmailChange): email_utils.send_change_email(email_change.new_email, user.email, user.name, link) - flash("You are going to receive an email to confirm email change", "success") - @dashboard_bp.route("/resend_email_change", methods=["GET", "POST"]) @login_required