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:
parent
4d8392b159
commit
a91aed785c
3 changed files with 48 additions and 32 deletions
|
@ -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()
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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(" ", "_")
|
||||||
|
|
Loading…
Reference in a new issue