mirror of
https://codeberg.org/Mo8it/AdvLabDB.git
synced 2024-09-19 18:31:16 +00:00
66 lines
2.1 KiB
Python
66 lines
2.1 KiB
Python
from flask import Blueprint, flash, redirect, request, url_for
|
|
from flask_login import current_user
|
|
from flask_security.decorators import auth_required
|
|
|
|
from .model_dependent_funs import active_semester_str
|
|
from .models import Semester, db
|
|
|
|
bp = Blueprint("main", __name__, root_path="/", template_folder="templates")
|
|
|
|
|
|
@bp.app_context_processor
|
|
def util_processor():
|
|
author_email = "mobitar@students.uni-mainz.de"
|
|
footer = f"<hr><p style='font-size:14px;'>This website is still under development (beta release)! If you have any questions, find any bugs or want some feature, please write a formless email (german/english) to Mo Bitar: <a href='mailto:{author_email}'>{author_email}</a>. Feedback is also welcome :)</p><br>"
|
|
|
|
return dict(active_semester_str=active_semester_str, current_user=current_user, footer=footer)
|
|
|
|
|
|
@bp.route("/")
|
|
def index():
|
|
if current_user.has_role("admin"):
|
|
endpoint_base = "admin"
|
|
elif current_user.has_role("assistant"):
|
|
endpoint_base = "assistant"
|
|
else:
|
|
return redirect(url_for("security.login"))
|
|
|
|
url = url_for(endpoint_base + ".index")
|
|
|
|
return redirect(url)
|
|
|
|
|
|
@bp.route("/post-login")
|
|
@auth_required()
|
|
def post_login():
|
|
current_active_semester = current_user.active_semester
|
|
|
|
if current_active_semester.done:
|
|
last_semester = Semester.lastSemester()
|
|
|
|
if not last_semester.done:
|
|
try:
|
|
current_user.active_semester = last_semester
|
|
|
|
db.session.commit()
|
|
except Exception as ex:
|
|
flash(str(ex), "error")
|
|
|
|
db.session.rollback()
|
|
else:
|
|
flash(
|
|
f"Active semester changed to {last_semester} because the semester {current_active_semester} was marked as done!",
|
|
"warning",
|
|
)
|
|
|
|
if current_user.has_role("admin"):
|
|
endpoint_base = "admin"
|
|
else:
|
|
endpoint_base = "assistant"
|
|
|
|
if current_user.login_count == 1:
|
|
url = url_for(endpoint_base + "_docs.index")
|
|
else:
|
|
url = url_for(endpoint_base + ".index")
|
|
|
|
return redirect(url)
|