2022-09-19 17:14:45 +00:00
from flask import Blueprint , redirect , url_for
2022-08-15 20:22:36 +00:00
from flask_login import current_user
from flask_security . decorators import auth_required
2021-04-03 00:11:26 +00:00
2022-11-19 18:52:29 +00:00
from . import security , settings
2022-06-01 20:53:23 +00:00
from . model_dependent_funs import active_semester_str
2021-03-18 13:53:55 +00:00
2022-08-09 12:46:48 +00:00
bp = Blueprint ( " main " , __name__ , root_path = " / " , template_folder = " templates " )
2021-03-31 23:04:21 +00:00
2022-08-09 12:46:48 +00:00
@bp.app_context_processor
2021-03-20 14:41:22 +00:00
def util_processor ( ) :
2022-06-17 20:24:23 +00:00
author_email = " mobitar@students.uni-mainz.de "
2022-10-09 01:02:35 +00:00
repo_url = settings [ " repo_url " ]
footer = f " 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><br><br>AdvLabDB - <a href= { repo_url } target= ' _blank ' rel= ' noopener noreferrer ' >Source code</a> "
2022-08-09 12:46:48 +00:00
2022-06-01 20:53:23 +00:00
return dict ( active_semester_str = active_semester_str , current_user = current_user , footer = footer )
2021-03-20 14:41:22 +00:00
2021-03-31 23:04:21 +00:00
2022-11-10 12:20:18 +00:00
@security.login_context_processor
def login_context_processor ( ) :
return dict ( message = settings . get ( " login_view_message " ) )
2022-08-09 12:46:48 +00:00
@bp.route ( " / " )
2021-03-18 13:53:55 +00:00
def index ( ) :
2021-05-17 20:15:50 +00:00
if current_user . has_role ( " admin " ) :
2022-06-28 14:57:55 +00:00
endpoint_base = " admin "
2021-05-17 20:15:50 +00:00
elif current_user . has_role ( " assistant " ) :
2022-06-28 14:57:55 +00:00
endpoint_base = " assistant "
2021-05-17 20:15:50 +00:00
else :
2021-09-11 19:20:36 +00:00
return redirect ( url_for ( " security.login " ) )
2021-03-18 22:20:59 +00:00
2022-09-17 13:55:09 +00:00
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 :
2022-09-19 13:19:25 +00:00
current_user . set_last_semester_as_active ( )
2022-09-17 13:55:09 +00:00
if current_user . has_role ( " admin " ) :
endpoint_base = " admin "
else :
endpoint_base = " assistant "
2022-06-28 14:57:55 +00:00
if current_user . login_count == 1 :
2022-06-28 15:01:32 +00:00
url = url_for ( endpoint_base + " _docs.index " )
2022-06-28 14:57:55 +00:00
else :
url = url_for ( endpoint_base + " .index " )
return redirect ( url )
2022-09-21 14:52:04 +00:00
@bp.route ( " /user-settings " )
@auth_required ( )
def user_settings ( ) :
if current_user . has_role ( " admin " ) :
role = " admin "
else :
role = " assistant "
url = url_for ( " main.index " ) + role + " /user/edit/?id= " + str ( current_user . id )
return redirect ( url )