summaryrefslogtreecommitdiffstats
path: root/accounts/views/default/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'accounts/views/default/__init__.py')
-rw-r--r--accounts/views/default/__init__.py175
1 files changed, 103 insertions, 72 deletions
diff --git a/accounts/views/default/__init__.py b/accounts/views/default/__init__.py
index bba20fd..1639182 100644
--- a/accounts/views/default/__init__.py
+++ b/accounts/views/default/__init__.py
@@ -3,14 +3,17 @@
from copy import deepcopy
from flask import Blueprint
-from flask import redirect, render_template, request, \
- flash, url_for
+from flask import redirect, render_template, request, flash, url_for
from flask_login import login_required, login_user, current_user
from werkzeug.exceptions import Forbidden
from werkzeug import Response
-from accounts.forms import RegisterForm, RegisterCompleteForm, \
- LostPasswordForm, SettingsForm
+from accounts.forms import (
+ RegisterForm,
+ RegisterCompleteForm,
+ LostPasswordForm,
+ SettingsForm,
+)
from accounts.utils import templated
from accounts.utils.confirmation import Confirmation
from accounts.utils.login import logout_required
@@ -20,33 +23,39 @@ from accounts.app import accounts_app
from typing import Union
-bp = Blueprint('default', __name__)
+bp = Blueprint("default", __name__)
-@bp.route('/register', methods=['GET', 'POST'])
-@templated('register.html')
+@bp.route("/register", methods=["GET", "POST"])
+@templated("register.html")
@logout_required
def register() -> Union[dict, Response]:
form = RegisterForm()
if form.validate_on_submit():
- accounts_app.mail_backend.send(form.mail.data, 'mail/register.txt',
- username=form.username.data)
+ accounts_app.mail_backend.send(
+ form.mail.data, "mail/register.txt", username=form.username.data
+ )
- flash('Es wurde eine E-Mail an die angegebene Adresse geschickt, '
- 'um diese zu überprüfen. Bitte folge den Anweisungen in der '
- 'E-Mail.', 'success')
+ flash(
+ "Es wurde eine E-Mail an die angegebene Adresse geschickt, "
+ "um diese zu überprüfen. Bitte folge den Anweisungen in der "
+ "E-Mail.",
+ "success",
+ )
- return redirect(url_for('.index'))
+ return redirect(url_for(".index"))
- return {'form': form}
+ return {"form": form}
-@bp.route('/register/<token>', methods=['GET', 'POST'])
-@templated('register_complete.html')
+@bp.route("/register/<token>", methods=["GET", "POST"])
+@templated("register_complete.html")
@logout_required
def register_complete(token: str):
- #TODO: check for double uids and mail
- username, mail = Confirmation('register').loads_http(token, max_age=3*24*60*60)
+ # TODO: check for double uids and mail
+ username, mail = Confirmation("register").loads_http(
+ token, max_age=3 * 24 * 60 * 60
+ )
try:
accounts_app.user_backend.get_by_uid(username)
@@ -54,8 +63,10 @@ def register_complete(token: str):
except accounts_app.user_backend.NoSuchUserError:
pass
else:
- flash('Du hast den Benutzer bereits angelegt! Du kannst dich jetzt einfach einloggen:')
- return redirect(url_for('.index'))
+ flash(
+ "Du hast den Benutzer bereits angelegt! Du kannst dich jetzt einfach einloggen:"
+ )
+ return redirect(url_for(".index"))
form = RegisterCompleteForm()
if form.validate_on_submit():
@@ -64,45 +75,53 @@ def register_complete(token: str):
login_user(user)
accounts_app.mail_backend.send(
- accounts_app.config['MAIL_REGISTER_NOTIFY'],
- 'mail/register_notify.txt',
- username=username, mail=mail)
+ accounts_app.config["MAIL_REGISTER_NOTIFY"],
+ "mail/register_notify.txt",
+ username=username,
+ mail=mail,
+ )
- flash('Benutzer erfolgreich angelegt.', 'success')
- return redirect(url_for('.index'))
+ flash("Benutzer erfolgreich angelegt.", "success")
+ return redirect(url_for(".index"))
return {
- 'form': form,
- 'token': token,
- 'username': username,
- 'mail': mail,
+ "form": form,
+ "token": token,
+ "username": username,
+ "mail": mail,
}
-@bp.route('/lost_password', methods=['GET', 'POST'])
-@templated('lost_password.html')
+@bp.route("/lost_password", methods=["GET", "POST"])
+@templated("lost_password.html")
@logout_required
def lost_password():
form = LostPasswordForm()
if form.validate_on_submit() and form.user:
- #TODO: make the link only usable once (e.g include a hash of the old pw)
+ # TODO: make the link only usable once (e.g include a hash of the old pw)
# atm the only thing we do is make the link valid for only little time
accounts_app.mail_backend.send(
- form.user.mail, 'mail/lost_password.txt', username=form.user.uid)
+ form.user.mail, "mail/lost_password.txt", username=form.user.uid
+ )
- flash('Wir haben dir eine E-Mail mit einem Link zum Passwort ändern '
- 'geschickt. Bitte folge den Anweisungen in der E-Mail.', 'success')
+ flash(
+ "Wir haben dir eine E-Mail mit einem Link zum Passwort ändern "
+ "geschickt. Bitte folge den Anweisungen in der E-Mail.",
+ "success",
+ )
- return redirect(url_for('.index'))
+ return redirect(url_for(".index"))
- return {'form': form}
+ return {"form": form}
-@bp.route('/lost_password/<token>', methods=['GET', 'POST'])
-@templated('lost_password_complete.html')
+@bp.route("/lost_password/<token>", methods=["GET", "POST"])
+@templated("lost_password_complete.html")
@logout_required
def lost_password_complete(token: str):
- (username,) = Confirmation('lost_password').loads_http(token, max_age=4*60*60)
+ (username,) = Confirmation("lost_password").loads_http(
+ token, max_age=4 * 60 * 60
+ )
form = RegisterCompleteForm()
if form.validate_on_submit():
@@ -111,45 +130,52 @@ def lost_password_complete(token: str):
accounts_app.user_backend.update(user, as_admin=True)
login_user(user)
- flash('Passwort geändert.', 'success')
- return redirect(url_for('.index'))
+ flash("Passwort geändert.", "success")
+ return redirect(url_for(".index"))
return {
- 'form': form,
- 'token': token,
- 'username': username,
+ "form": form,
+ "token": token,
+ "username": username,
}
-@bp.route('/', methods=['GET', 'POST'])
-@templated('index.html')
+@bp.route("/", methods=["GET", "POST"])
+@templated("index.html")
@login_required
def index() -> Union[Response, dict]:
form = SettingsForm(mail=current_user.mail)
if form.validate_on_submit():
changed = False
- if request.form.get('submit_services'):
+ if request.form.get("submit_services"):
for service in accounts_app.all_services:
field = form.get_servicedelete(service.id)
if field.data:
current_user.reset_password(service.id)
changed = True
- elif request.form.get('submit_main'):
+ elif request.form.get("submit_main"):
if form.mail.data and form.mail.data != current_user.mail:
accounts_app.mail_backend.send(
- form.mail.data, 'mail/change_mail.txt',
- username=current_user.uid)
-
- flash('Es wurde eine E-Mail an die angegebene Adresse geschickt, '
- 'um diese zu überprüfen. Bitte folge den Anweisungen in der '
- 'E-Mail.', 'success')
+ form.mail.data,
+ "mail/change_mail.txt",
+ username=current_user.uid,
+ )
+
+ flash(
+ "Es wurde eine E-Mail an die angegebene Adresse geschickt, "
+ "um diese zu überprüfen. Bitte folge den Anweisungen in der "
+ "E-Mail.",
+ "success",
+ )
changed = True
if form.password.data:
- current_user.change_password(form.password.data, form.old_password.data)
- flash('Passwort geändert', 'success')
+ current_user.change_password(
+ form.password.data, form.old_password.data
+ )
+ flash("Passwort geändert", "success")
changed = True
for service in accounts_app.all_services:
@@ -161,46 +187,51 @@ def index() -> Union[Response, dict]:
if changed:
accounts_app.user_backend.update(current_user)
login_user(current_user)
- return redirect(url_for('.index'))
+ return redirect(url_for(".index"))
else:
- flash('Nichts geändert.')
-
+ flash("Nichts geändert.")
services = deepcopy(accounts_app.all_services)
for s in services:
s.changed = s.id in current_user.services
return {
- 'form': form,
- 'services': services,
+ "form": form,
+ "services": services,
}
-@bp.route('/change_mail/<token>')
+@bp.route("/change_mail/<token>")
@login_required
def change_mail(token: str):
- username, mail = Confirmation('change_mail').loads_http(token, max_age=3*24*60*60)
+ username, mail = Confirmation("change_mail").loads_http(
+ token, max_age=3 * 24 * 60 * 60
+ )
if current_user.uid != username:
- raise Forbidden('Bitte logge dich als der Benutzer ein, dessen E-Mail-Adresse du ändern willst.')
+ raise Forbidden(
+ "Bitte logge dich als der Benutzer ein, dessen E-Mail-Adresse du ändern willst."
+ )
results = accounts_app.user_backend.find_by_mail(mail)
for user in results:
if user.uid != current_user.uid:
- raise Forbidden('Diese E-Mail-Adresse wird schon von einem anderen account benutzt!')
+ raise Forbidden(
+ "Diese E-Mail-Adresse wird schon von einem anderen account benutzt!"
+ )
current_user.change_email(mail)
accounts_app.user_backend.update(current_user)
- flash('E-Mail-Adresse geändert.', 'success')
- return redirect(url_for('.index'))
+ flash("E-Mail-Adresse geändert.", "success")
+ return redirect(url_for(".index"))
-@bp.route('/about')
-@templated('about.html')
+@bp.route("/about")
+@templated("about.html")
def about():
return {
- 'app': accounts_app,
+ "app": accounts_app,
}
@@ -213,4 +244,4 @@ def errorhandler(e):
except AttributeError:
code = 500
- return render_template('error.html', error=e), code
+ return render_template("error.html", error=e), code