nopaque/app/settings/routes.py

66 lines
2.5 KiB
Python
Raw Normal View History

from flask import flash, redirect, render_template, url_for
2022-09-02 11:07:30 +00:00
from flask_login import current_user, login_required
from app import db
from app.models import UserSettingJobStatusMailNotificationLevel
from . import bp
from .forms import (
ChangePasswordForm,
EditGeneralSettingsForm,
2022-11-29 15:46:33 +00:00
EditNotificationSettingsForm,
EditPrivacySettingsForm
)
@bp.route('', methods=['GET', 'POST'])
@login_required
2022-09-02 11:07:30 +00:00
def settings():
change_password_form = ChangePasswordForm(
2022-09-02 11:07:30 +00:00
current_user,
prefix='change-password-form'
)
edit_general_settings_form = EditGeneralSettingsForm(
2022-09-02 11:07:30 +00:00
current_user,
2022-11-24 11:24:29 +00:00
data=current_user.to_json_serializeable(),
2022-09-02 11:07:30 +00:00
prefix='edit-general-settings-form'
)
edit_notification_settings_form = EditNotificationSettingsForm(
2022-11-24 11:24:29 +00:00
data=current_user.to_json_serializeable(),
2022-09-02 11:07:30 +00:00
prefix='edit-notification-settings-form'
)
2022-11-29 15:46:33 +00:00
edit_privacy_settings_form = EditPrivacySettingsForm(
data=current_user.to_json_serializeable(),
prefix='edit-privacy-settings-form'
)
if change_password_form.submit.data and change_password_form.validate():
current_user.password = change_password_form.new_password.data
db.session.commit()
flash('Your changes have been saved')
return redirect(url_for('.index'))
2022-09-02 11:07:30 +00:00
if (edit_general_settings_form.submit.data
and edit_general_settings_form.validate()):
current_user.email = edit_general_settings_form.email.data
current_user.username = edit_general_settings_form.username.data
db.session.commit()
flash('Your changes have been saved')
2022-09-02 11:07:30 +00:00
return redirect(url_for('.settings'))
if (edit_notification_settings_form.submit.data
and edit_notification_settings_form.validate()):
current_user.setting_job_status_mail_notification_level = (
UserSettingJobStatusMailNotificationLevel[
edit_notification_settings_form.job_status_mail_notification_level.data # noqa
]
2022-09-02 11:07:30 +00:00
)
db.session.commit()
flash('Your changes have been saved')
2022-09-02 11:07:30 +00:00
return redirect(url_for('.settings'))
2022-11-29 15:46:33 +00:00
user_image = 'static/images/user_avatar.png'
return render_template(
2022-09-02 11:07:30 +00:00
'settings/settings.html.j2',
change_password_form=change_password_form,
edit_general_settings_form=edit_general_settings_form,
edit_notification_settings_form=edit_notification_settings_form,
2022-11-29 15:46:33 +00:00
edit_privacy_settings_form=edit_privacy_settings_form,
user_image=user_image,
title='Profile & Settings'
)