1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-12-20 23:41:20 +00:00
This commit is contained in:
Mo 2021-07-14 04:25:34 +02:00
parent 1aa6737cd0
commit 2d268811de
2 changed files with 10 additions and 128 deletions

View file

@ -2,62 +2,12 @@ from flask import redirect, render_template, request, url_for, flash
from flask_security import auth_required, current_user from flask_security import auth_required, current_user
from advlabdb import app from advlabdb import app
from advlabdb.models import Semester from advlabdb.utils import setUserActiveSemester, userActiveSemester
from advlabdb.utils import setUserActiveSemester, titleToTemplate, userActiveSemester
@app.context_processor @app.context_processor
def util_processor(): def util_processor():
def semesterDropDownItems(): return dict(userActiveSemester=userActiveSemester)
semesters = Semester.query.all()
items = []
for semester in semesters:
items.append(
'<li><a class="dropdown-item" href="'
+ url_for("set_semester")
+ "?semester_id="
+ str(semester.id)
+ '">'
+ semester.label
+ "</a></li>"
)
return items
def navbarItems(title):
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"]
items = []
for page in pages:
if page == title:
active = " active"
else:
active = ""
items.append('<a class="nav-link' + active + '" href="' + titleToTemplate(page) + '">' + page + "</a>")
return items
return dict(
semesterDropDownItems=semesterDropDownItems,
userActiveSemester=userActiveSemester,
navbarItems=navbarItems,
current_user=current_user,
)
@app.route("/") @app.route("/")

View file

@ -8,78 +8,14 @@ from advlabdb import db
from advlabdb.models import Semester from advlabdb.models import Semester
def makeTable(headerAndDataList, rows, tableId="table"):
def cellString(cell):
cell = str(cell)
if cell == "[]":
return "<em>None</em>"
excludeChars = """<>"'[]"""
for c in excludeChars:
if c in cell:
cell = cell.replace(c, "")
return cell
def td(cell):
return "<td>" + cellString(cell) + "</td>"
def th(cell):
return '<th data-sortable="true" data-field="' + titleToTemplate(cell) + '">' + cellString(cell) + "</th>"
table = (
'''<table
id="'''
+ tableId
+ """"
data-classes="table table-bordered table-striped"
data-toggle="table"
data-thead-classes="table-dark"
data-search="true"
data-show-toggle="true"
data-show-columns="true"
data-click-to-select="true"
data-show-export="true"
data-export-types="['json', 'xml', 'csv', 'txt', 'sql', 'pdf']">
<thead>
<tr>
<th data-field="state" data-checkbox="true"></th>"""
)
for i in headerAndDataList:
table += th(i[0])
table += """</tr>
</thead>
<tbody>\n"""
for row in rows:
table += "<tr><td></td>"
for i in headerAndDataList:
table += td(eval(i[1]))
table += "</tr>\n"
table += """</tbody>
</table>
<br>
<hr>
<br>"""
return table
def appointmentDate(date):
return date.strftime("%a %d.%m.%Y")
def randomPassword(): def randomPassword():
return "".join(choice(ascii_letters + digits) for i in range(12)) return "".join(choice(ascii_letters + digits) for i in range(12))
def titleToTemplate(page):
return page.lower().replace(" ", "_")
def userActiveSemester(flashWarning=False): def userActiveSemester(flashWarning=False):
lastSemesterId = Semester.query.all()[-1].id lastSemesterId = (
Semester.query.order_by(Semester.year).order_by(Semester.id.desc()).first().id
) # TODO: Check orders
if current_user.active_semester_id is None: if current_user.active_semester_id is None:
current_user.active_semester_id = lastSemesterId current_user.active_semester_id = lastSemesterId
db.session.commit() db.session.commit()
@ -87,23 +23,19 @@ def userActiveSemester(flashWarning=False):
activeSemester = Semester.query.get(current_user.active_semester_id) activeSemester = Semester.query.get(current_user.active_semester_id)
if activeSemester: if activeSemester:
if flashWarning: if flashWarning:
flash(f"You are in the old semester {activeSemester.label}!", "warning") flash(f"You are in the old semester {activeSemester.repr()}!", "warning")
else: else:
current_user.active_semester_id = lastSemesterId current_user.active_semester_id = lastSemesterId
db.session.commit() db.session.commit()
flash("Semester changed!", "warning") flash("Semester changed!", "warning")
return Semester.query.get(current_user.active_semester_id) return Semester.query.get(current_user.active_semester_id)
def partFromLabelInUserActiveSemester(partLabel):
for part in userActiveSemester().parts:
if part.label == partLabel:
return part
def setUserActiveSemester(semesterId): def setUserActiveSemester(semesterId):
if current_user.active_semester_id != semesterId: if current_user.active_semester_id != semesterId:
if Semester.query.get(semesterId): semester = Semester.query.get(semesterId)
if semester:
try: try:
current_user.active_semester_id = semesterId current_user.active_semester_id = semesterId
db.session.commit() db.session.commit()
@ -112,6 +44,6 @@ def setUserActiveSemester(semesterId):
db.session.rollback() db.session.rollback()
else: else:
flash(f"Active semester changed to {Semester.query.get(semesterId).label}!", "warning") flash(f"Active semester changed to {semester.repr()}!", "warning")
else: else:
flash(f"No semester with ID {semesterId}!", "error") flash(f"No semester with ID {semesterId}!", "error")