From 0cdb11ae14c0722e1aa7c6f55165568f0a37cd24 Mon Sep 17 00:00:00 2001 From: kaiyou <pierre@jaury.eu> Date: Wed, 11 Dec 2019 16:19:34 +0100 Subject: [PATCH] Add a contact info field for users --- hiboo/account/forms.py | 6 +++++ hiboo/account/settings.py | 14 ++++++++++ hiboo/account/templates/account_contact.html | 3 +++ hiboo/models.py | 1 + .../versions/ebc103f8bc5e_add_contact_info.py | 26 +++++++++++++++++++ 5 files changed, 50 insertions(+) create mode 100644 hiboo/account/templates/account_contact.html create mode 100644 migrations/versions/ebc103f8bc5e_add_contact_info.py diff --git a/hiboo/account/forms.py b/hiboo/account/forms.py index 141d55fd..709181a8 100644 --- a/hiboo/account/forms.py +++ b/hiboo/account/forms.py @@ -28,3 +28,9 @@ class PasswordForm(flask_wtf.FlaskForm): password2 = fields.PasswordField(_('Confirm new password'), [validators.DataRequired(), validators.EqualTo('password')]) submit = fields.SubmitField(_('Change password')) + + +class ContactForm(flask_wtf.FlaskForm): + email = fields.StringField(_("Email address"), [validators.Email()]) + matrix = fields.StringField(_("Matrix ID"), []) + submit = fields.SubmitField(_("Update contact info")) diff --git a/hiboo/account/settings.py b/hiboo/account/settings.py index 0680926c..07cca79e 100644 --- a/hiboo/account/settings.py +++ b/hiboo/account/settings.py @@ -21,3 +21,17 @@ def password(): else: flask.flash("Wrong credentials, check your old password", "danger") return flask.render_template("account_password.html", form=form) + + +@blueprint.route("/contact", methods=["GET", "POST"]) +@security.authentication_required() +def contact(): + user = flask_login.current_user + form = forms.ContactForm() + if form.validate_on_submit(): + user.contact = form.data + models.db.session.add(user) + models.db.session.commit() + flask.flash("Successfully updated your contact info", "success") + form.process(**user.contact) + return flask.render_template("account_contact.html", form=form) diff --git a/hiboo/account/templates/account_contact.html b/hiboo/account/templates/account_contact.html new file mode 100644 index 00000000..382553bf --- /dev/null +++ b/hiboo/account/templates/account_contact.html @@ -0,0 +1,3 @@ +{% extends "form.html" %} + +{% block title %}{% trans %}Update contact info{% endtrans %}{% endblock %} diff --git a/hiboo/models.py b/hiboo/models.py index 92d5b5e8..f4c8f83e 100644 --- a/hiboo/models.py +++ b/hiboo/models.py @@ -77,6 +77,7 @@ class User(db.Model): username = db.Column(db.String(255), nullable=False, unique=True) is_admin = db.Column(db.Boolean(), nullable=False, default=False) + contact = db.Column(mutable.MutableDict.as_mutable(JSONEncoded)) # Flask-login attributes is_authenticated = True diff --git a/migrations/versions/ebc103f8bc5e_add_contact_info.py b/migrations/versions/ebc103f8bc5e_add_contact_info.py new file mode 100644 index 00000000..9ad08f60 --- /dev/null +++ b/migrations/versions/ebc103f8bc5e_add_contact_info.py @@ -0,0 +1,26 @@ +""" Add a contact info field + +Revision ID: ebc103f8bc5e +Revises: fa59f288c9f2 +Create Date: 2019-12-11 16:05:46.359886 +""" + +from alembic import op +import sqlalchemy as sa +import hiboo + + +revision = 'ebc103f8bc5e' +down_revision = 'fa59f288c9f2' +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table('user') as batch_op: + batch_op.add_column(sa.Column('contact', hiboo.models.JSONEncoded(), nullable=True)) + + +def downgrade(): + with op.batch_alter_table('user') as batch_op: + batch_op.drop_column('contact') -- GitLab