50 lines
1.3 KiB
Python
50 lines
1.3 KiB
Python
import pendulum
|
|
from flask import Blueprint, render_template, g, request as http_request, redirect
|
|
from atat.forms.edit_user import EditUserForm
|
|
from atat.domain.users import Users
|
|
from atat.utils.flash import formatted_flash as flash
|
|
from atat.routes import match_url_pattern
|
|
|
|
|
|
bp = Blueprint("users", __name__)
|
|
|
|
|
|
@bp.route("/user")
|
|
def user():
|
|
user = g.current_user
|
|
form = EditUserForm(data=user.to_dictionary())
|
|
next_ = http_request.args.get("next")
|
|
|
|
if next_:
|
|
flash("user_must_complete_profile")
|
|
|
|
return render_template(
|
|
"user/edit.html",
|
|
next=next_,
|
|
form=form,
|
|
user=user,
|
|
mindate=pendulum.now(tz="utc").subtract(days=365),
|
|
maxdate=pendulum.now(tz="utc"),
|
|
)
|
|
|
|
|
|
@bp.route("/user", methods=["POST"])
|
|
def update_user():
|
|
user = g.current_user
|
|
form = EditUserForm(http_request.form)
|
|
next_url = http_request.args.get("next")
|
|
if form.validate():
|
|
Users.update(user, form.data)
|
|
flash("user_updated")
|
|
if match_url_pattern(next_url):
|
|
return redirect(next_url)
|
|
|
|
return render_template(
|
|
"user/edit.html",
|
|
form=form,
|
|
user=user,
|
|
next=next_url,
|
|
mindate=pendulum.now(tz="utc").subtract(days=365),
|
|
maxdate=pendulum.now(tz="utc"),
|
|
)
|