From 6638f656e270c9cac4dbbf915eaa77c5f419d998 Mon Sep 17 00:00:00 2001 From: Pierre Jaury Date: Sun, 20 Mar 2016 11:09:06 +0100 Subject: [PATCH] Add some example settings --- admin/freeposte/forms.py | 7 +++++++ admin/freeposte/models.py | 6 ++++++ admin/freeposte/templates/user/settings.html | 10 +++++++++- admin/freeposte/views/users.py | 14 +++++++++++++- 4 files changed, 35 insertions(+), 2 deletions(-) diff --git a/admin/freeposte/forms.py b/admin/freeposte/forms.py index 787cba1d..2e1a72cc 100644 --- a/admin/freeposte/forms.py +++ b/admin/freeposte/forms.py @@ -31,6 +31,13 @@ class UserEditForm(Form): submit = fields.SubmitField('Create') +class UserSettingsForm(Form): + displayed_name = fields.StringField('Displayed name') + spam_enabled = fields.BooleanField('Enable spam filter') + spam_threshold = fields.DecimalField('Spam filter sensitivity') + submit = fields.SubmitField('Save settings') + + class UserPasswordForm(Form): pw = fields.PasswordField('Password', [validators.DataRequired()]) pw2 = fields.PasswordField('Password check', [validators.DataRequired()]) diff --git a/admin/freeposte/models.py b/admin/freeposte/models.py index 6b5e9601..da0c46f7 100644 --- a/admin/freeposte/models.py +++ b/admin/freeposte/models.py @@ -67,6 +67,12 @@ class User(Address): reply_topic = db.Column(db.String(255), nullable=True, default=None) reply_body = db.Column(db.Text(), nullable=True, default=None) + # Settings + displayed_name = db.Column(db.String(160), nullable=False, default="") + spam_enabled = db.Column(db.Boolean(), nullable=False, default=True) + spam_threshold = db.Column(db.Numeric(), nullable=False, default=5.0) + + # Flask-login attributes is_authenticated = True is_active = True is_anonymous = False diff --git a/admin/freeposte/templates/user/settings.html b/admin/freeposte/templates/user/settings.html index a500fb36..ef31cba7 100644 --- a/admin/freeposte/templates/user/settings.html +++ b/admin/freeposte/templates/user/settings.html @@ -1 +1,9 @@ -{% extends "working.html" %} +{% extends "form.html" %} + +{% block title %} +User settings +{% endblock %} + +{% block subtitle %} +{{ user }} +{% endblock %} diff --git a/admin/freeposte/views/users.py b/admin/freeposte/views/users.py index 1effc2b9..6aec6451 100644 --- a/admin/freeposte/views/users.py +++ b/admin/freeposte/views/users.py @@ -66,7 +66,19 @@ def user_delete(user_email): @app.route('/user/usersettings/', methods=['GET', 'POST']) @flask_login.login_required def user_settings(user_email): - return flask.render_template('user/settings.html') + user = utils.get_user(user_email) + form = forms.UserSettingsForm() + if form.validate_on_submit(): + user.displayed_name = form.displayed_name.data + user.spam_enabled = form.spam_enabled.data + user.spam_threshold = form.spam_threshold.data + db.session.add(user) + db.session.commit() + flask.flash('Settings updated for %s' % user) + if user_email: + return flask.redirect( + flask.url_for('user_list', domain_name=user.domain.name)) + return flask.render_template('user/settings.html', form=form, user=user) @app.route('/user/password', methods=['GET', 'POST'], defaults={'user_email': None})