from flask import current_app, flash, redirect, render_template, url_for from flask_login import current_user, login_required from . import settings from .forms import (ChangePasswordForm, EditGeneralSettingsForm, EditNotificationSettingsForm) from .. import db from ..decorators import admin_required from ..models import Role, User import os import uuid @settings.route('/') @login_required def index(): return redirect(url_for('.edit_general_settings')) @settings.route('/change_password', methods=['GET', 'POST']) @login_required def change_password(): form = ChangePasswordForm() if form.validate_on_submit(): current_user.password = form.new_password.data db.session.commit() flash('Your password has been updated.') return redirect(url_for('.change_password')) return render_template('settings/change_password.html.j2', form=form, title='Change password') @settings.route('/edit_general_settings') @login_required def edit_general_settings(): form = EditGeneralSettingsForm() if form.validate_on_submit(): current_user.email = form.email.data current_user.setting_dark_mode = form.dark_mode.data current_user.username = form.username.data db.session.commit() flash('Your changes have been saved.') return render_template('settings/edit_general_settings.html.j2', form=form, title='General settings') @settings.route('/edit_notification_settings') @login_required def edit_notification_settings(): form = EditNotificationSettingsForm() if form.validate_on_submit(): current_user.setting_job_status_mail_notifications = \ form.job_status_mail_notifications.data current_user.setting_job_status_site_notifications = \ form.job_status_site_notifications.data db.session.commit() flash('Your changes have been saved.') return render_template('settings/edit_notification_settings.html.j2', form=form, title='Notification settings') @settings.route('/delete') @login_required def delete(): """ View to delete current_user and all associated data. """ tasks.delete_user(current_user.id) logout_user() flash('Your account has been deleted!') return redirect(url_for('main.index'))