1
0
Fork 0
mirror of https://codeberg.org/Mo8it/AdvLabDB.git synced 2024-09-19 18:31:16 +00:00

Fixed navbar and register

This commit is contained in:
Mo 2021-04-01 14:08:42 +02:00
parent 4d8392b159
commit a91aed785c
3 changed files with 48 additions and 32 deletions

View file

@ -17,16 +17,32 @@ def util_processor():
items.append('<li><a class="dropdown-item" href="' + url_for("set_semester") + "?semester_id=" + items.append('<li><a class="dropdown-item" href="' + url_for("set_semester") + "?semester_id=" +
str(semester.id) + '">' + semester.label + '</a></li>') str(semester.id) + '">' + semester.label + '</a></li>')
return items return items
pages = ["Index", "Students", "Assistants", "Experiments", "Appointments", "Groups", "Users", "Semesters"]
def navbarItems(title):
items = []
for page in pages[1:]:
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, return dict(semesterDropDownItems=semesterDropDownItems,
activeSemesterLabel=Semester.query.get(activeSemester_id).label) activeSemesterLabel=Semester.query.get(activeSemester_id).label,
pages=pages,
navbarItems=navbarItems)
@app.route("/") @app.route("/")
def index(): def index():
global activeSemester_id global activeSemester_id
activeSemester_id = Semester.query.all()[-1].id activeSemester_id = Semester.query.all()[-1].id
page = "index" title = "Index"
return render_template(page + ".html", navbarItems=navbarItems(page)) return render_template(titleToTemplate(title) + ".html", title=title)
@app.route("/students") @app.route("/students")
@ -52,8 +68,8 @@ def students():
tablesLabels.append("Part " + part.label + ":") tablesLabels.append("Part " + part.label + ":")
tables.append(makeTable(headerAndDataList=headerAndDataList, tables.append(makeTable(headerAndDataList=headerAndDataList,
rows=part.part_students)) rows=part.part_students))
page = "students" title = "Students"
return render_template(page + ".html", navbarItems=navbarItems(page), return render_template(titleToTemplate(title) + ".html", title=title,
tables=tables, tablesLabels=tablesLabels) tables=tables, tablesLabels=tablesLabels)
@ -73,8 +89,8 @@ def assistants():
table = makeTable(headerAndDataList=headerAndDataList, table = makeTable(headerAndDataList=headerAndDataList,
rows=Assistant.query.filter(Assistant.user_id != None).all()) rows=Assistant.query.filter(Assistant.user_id != None).all())
page = "assistants" title = "Assistants"
return render_template(page + ".html", navbarItems=navbarItems(page), return render_template(titleToTemplate(title) + ".html", title=title,
table=table) table=table)
@ -95,15 +111,15 @@ def experiments():
tables.append(makeTable(headerAndDataList=headerAndDataList, tables.append(makeTable(headerAndDataList=headerAndDataList,
rows=part.part_experiments)) rows=part.part_experiments))
page = "experiments" title = "Experiments"
return render_template(page + ".html", navbarItems=navbarItems(page), return render_template(titleToTemplate(title) + ".html", title=title,
tables=tables, tablesLabels=tablesLabels) tables=tables, tablesLabels=tablesLabels)
@app.route("/appointments") @app.route("/appointments")
def appointments(): def appointments():
page = "appointments" title = "Appointments"
return render_template(page + ".html", navbarItems=navbarItems(page)) return render_template(titleToTemplate(title) + ".html", title=title)
@app.route("/groups") @app.route("/groups")
@ -124,8 +140,8 @@ def groups():
tables.append(makeTable(headerAndDataList=headerAndDataList, tables.append(makeTable(headerAndDataList=headerAndDataList,
rows=part.groups)) rows=part.groups))
page = "groups" title = "Groups"
return render_template(page + ".html", navbarItems=navbarItems(page), return render_template(titleToTemplate(title) + ".html", title=title,
tables=tables, tablesLabels=tablesLabels) tables=tables, tablesLabels=tablesLabels)
@ -138,8 +154,8 @@ def users():
table = makeTable(headerAndDataList=headerAndDataList, table = makeTable(headerAndDataList=headerAndDataList,
rows=User.query.all()) rows=User.query.all())
page = "users" title = "Users"
return render_template(page + ".html", navbarItems=navbarItems(page), return render_template(titleToTemplate(title) + ".html", title=title,
table=table) table=table)
@ -147,8 +163,8 @@ def users():
def set_semester(): def set_semester():
global activeSemester_id global activeSemester_id
activeSemester_id = int(request.args.get("semester_id")) activeSemester_id = int(request.args.get("semester_id"))
page = "index" title = "Index"
return render_template(page + ".html", navbarItems=navbarItems(page)) return render_template(titleToTemplate(title) + ".html", title=title)
@app.route("/semesters") @app.route("/semesters")
@ -159,8 +175,8 @@ def semesters():
table = makeTable(headerAndDataList=headerAndDataList, table = makeTable(headerAndDataList=headerAndDataList,
rows=Semester.query.all()) rows=Semester.query.all())
page = "semesters" title = "Semesters"
return render_template(page + ".html", navbarItems=navbarItems(page), return render_template(titleToTemplate(title) + ".html", title=title,
table=table) table=table)
@ -169,9 +185,11 @@ def register():
form = RegistrationForm() form = RegistrationForm()
if form.validate_on_submit(): if form.validate_on_submit():
password = randomPassword() password = randomPassword()
passwordHash = generate_password_hash(password).decode("utf-8") passwordHash = generate_password_hash(password)
email = form.email.data email = form.email.data
admin = form.admin.data admin = form.admin.data
user = User(email=email, password_hash=passwordHash, is_admin=admin) user = User(email=email, password_hash=passwordHash, is_admin=admin)
db.session.add(user) db.session.add(user)
db.session.commit() db.session.commit()

View file

@ -22,12 +22,13 @@
<nav class="navbar navbar-expand-lg navbar-light bg-light"> <nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid"> <div class="container-fluid">
<a class="navbar-brand" href="{{url_for('index')}}">AdvLabDB</a> <a class="navbar-brand" href="{{url_for('index')}}">AdvLabDB</a>
{% if title in pages %}
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation"> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbar" aria-controls="navbar" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span> <span class="navbar-toggler-icon"></span>
</button> </button>
<div class="collapse navbar-collapse" id="navbar"> <div class="collapse navbar-collapse" id="navbar">
<ul class="navbar-nav"> <ul class="navbar-nav">
{% for item in navbarItems %} {% for item in navbarItems(title) %}
<li class="nav-item"> <li class="nav-item">
{{item|safe}} {{item|safe}}
</li> </li>
@ -44,6 +45,7 @@
</li> </li>
</ul> </ul>
</div> </div>
{% endif %}
</div> </div>
</nav> </nav>
<div class="container-fluid"> <div class="container-fluid">

View file

@ -1,13 +1,5 @@
def navbarItems(activePage): from random import choice
pages = ["Students", "Assistants", "Experiments", "Appointments", "Groups", "Users", "Semesters"] from string import digits, ascii_letters
items = []
for page in pages:
active = ""
lowerPage = page.lower().replace(" ", "_")
if lowerPage == activePage:
active = " active"
items.append('<a class="nav-link' + active + '" href="' + lowerPage + '">' + page + '</a>')
return items
def makeTable(headerAndDataList, rows): def makeTable(headerAndDataList, rows):
def cellString(cell): def cellString(cell):
@ -64,4 +56,8 @@ def appointmentDate(date):
def randomPassword(): def randomPassword():
return ''.join(random.choice(string.ascii_letters + string.digits) for i in range(12)) return ''.join(choice(ascii_letters + digits) for i in range(12))
def titleToTemplate(page):
return page.lower().replace(" ", "_")