2021-06-10 01:14:30 +00:00
|
|
|
from flask import 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-10 01:14:30 +00:00
|
|
|
from advlabdb import app
|
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 = []
|
2021-04-16 12:21:53 +00:00
|
|
|
|
|
|
|
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 = []
|
2021-04-16 12:21:53 +00:00
|
|
|
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-03-18 22:20:59 +00:00
|
|
|
|
2021-05-17 20:36:24 +00:00
|
|
|
|
2021-06-09 00:51:26 +00:00
|
|
|
@app.route("/set_semester")
|
2021-04-17 00:19:38 +00:00
|
|
|
@auth_required()
|
|
|
|
def set_semester():
|
2021-05-18 12:54:30 +00:00
|
|
|
setActiveSemester(request.args.get("semester_id"))
|
|
|
|
ref = request.referrer
|
|
|
|
red = ref if ref else url_for("index")
|
|
|
|
return redirect(red)
|