1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-11-08 21:21:06 +00:00
AdvLabDB/advlabdb/routes.py

80 lines
2.3 KiB
Python
Raw Normal View History

2021-06-02 21:43:41 +00:00
from flask import flash, redirect, render_template, request, url_for
2021-05-17 20:36:24 +00:00
from flask_security import auth_required, current_user
2021-04-03 00:11:26 +00:00
2021-06-02 21:43:41 +00:00
from advlabdb import app, db
2021-05-17 20:36:24 +00:00
from advlabdb.models import Semester
2021-06-02 21:43:41 +00:00
from advlabdb.utils import setActiveSemester, titleToTemplate, userActiveSemester
2021-03-18 13:53:55 +00:00
2021-03-31 23:04:21 +00:00
2021-03-20 14:41:22 +00:00
@app.context_processor
def util_processor():
def semesterDropDownItems():
semesters = Semester.query.all()
items = []
for semester in semesters:
2021-06-02 21:43:41 +00:00
items.append(
'<li><a class="dropdown-item" href="'
+ url_for("set_semester")
+ "?semester_id="
+ str(semester.id)
+ '">'
+ semester.label
+ "</a></li>"
)
2021-03-20 14:41:22 +00:00
return items
2021-04-01 12:08:42 +00:00
def navbarItems(title):
2021-05-02 16:11:08 +00:00
adminPages = []
assistantPages = []
if current_user.is_authenticated:
roleNames = [role.name for role in current_user.roles]
if "assistant" in roleNames:
pages = assistantPages
if "admin" in roleNames:
for p in adminPages:
if p not in pages:
pages.append(p)
elif "admin" in roleNames:
pages = adminPages
pages.append("Logout")
else:
pages = ["Login"]
2021-04-01 12:08:42 +00:00
items = []
for page in pages:
2021-04-01 12:08:42 +00:00
if page == title:
active = " active"
else:
active = ""
2021-06-02 21:43:41 +00:00
items.append('<a class="nav-link' + active + '" href="' + titleToTemplate(page) + '">' + page + "</a>")
2021-04-01 12:08:42 +00:00
return items
2021-06-02 21:43:41 +00:00
return dict(
semesterDropDownItems=semesterDropDownItems,
userActiveSemester=userActiveSemester,
navbarItems=navbarItems,
current_user=current_user,
)
2021-03-20 14:41:22 +00:00
2021-03-31 23:04:21 +00:00
2021-03-18 13:53:55 +00:00
@app.route("/")
def index():
2021-05-17 20:15:50 +00:00
if current_user.has_role("admin"):
return redirect(url_for("index") + "admin")
elif current_user.has_role("assistant"):
return redirect(url_for("index") + "assistant")
else:
return render_template("index.html")
2021-05-17 20:36:24 +00:00
2021-06-09 00:51:26 +00:00
@app.route("/set_semester")
@auth_required()
def set_semester():
setActiveSemester(request.args.get("semester_id"))
ref = request.referrer
red = ref if ref else url_for("index")
return redirect(red)