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

113 lines
2.9 KiB
Python
Raw Normal View History

2021-04-01 12:08:42 +00:00
from random import choice
2021-06-02 21:43:41 +00:00
from string import ascii_letters, digits
from flask import flash
2021-06-02 21:43:41 +00:00
from flask_security import current_user
2021-04-27 21:28:47 +00:00
from advlabdb import db
2021-06-02 21:43:41 +00:00
from advlabdb.models import Semester
2021-05-17 20:36:24 +00:00
def makeTable(headerAndDataList, rows, tableId="table"):
2021-03-19 17:09:07 +00:00
def cellString(cell):
cell = str(cell)
2021-03-20 14:41:22 +00:00
if cell == "[]":
return "<em>None</em>"
excludeChars = """<>"'[]"""
for c in excludeChars:
if c in cell:
cell = cell.replace(c, "")
return cell
2021-03-19 17:09:07 +00:00
2021-03-19 15:30:02 +00:00
def td(cell):
2021-06-02 21:43:41 +00:00
return "<td>" + cellString(cell) + "</td>"
2021-03-19 15:30:02 +00:00
def th(cell):
2021-06-02 21:43:41 +00:00
return '<th data-sortable="true" data-field="' + titleToTemplate(cell) + '">' + cellString(cell) + "</th>"
2021-03-19 17:09:07 +00:00
2021-06-02 21:43:41 +00:00
table = (
'''<table
id="'''
+ tableId
+ """"
2021-03-19 17:09:07 +00:00
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"
2021-03-19 17:09:07 +00:00
data-show-export="true"
data-export-types="['json', 'xml', 'csv', 'txt', 'sql', 'pdf']">
<thead>
<tr>
2021-06-02 21:43:41 +00:00
<th data-field="state" data-checkbox="true"></th>"""
)
2021-03-19 15:30:02 +00:00
for i in headerAndDataList:
table += th(i[0])
2021-06-02 21:43:41 +00:00
table += """</tr>
2021-03-19 17:09:07 +00:00
</thead>
2021-06-02 21:43:41 +00:00
<tbody>\n"""
2021-03-19 15:30:02 +00:00
for row in rows:
2021-06-02 21:43:41 +00:00
table += "<tr><td></td>"
2021-03-19 15:30:02 +00:00
for i in headerAndDataList:
table += td(eval(i[1]))
2021-06-02 21:43:41 +00:00
table += "</tr>\n"
2021-03-19 15:30:02 +00:00
2021-06-02 21:43:41 +00:00
table += """</tbody>
2021-03-19 17:09:07 +00:00
</table>
<br>
<hr>
2021-06-02 21:43:41 +00:00
<br>"""
2021-03-19 15:30:02 +00:00
return table
def appointmentDate(date):
return date.strftime("%a %d.%m.%Y")
2021-03-31 23:04:21 +00:00
def randomPassword():
2021-06-02 21:43:41 +00:00
return "".join(choice(ascii_letters + digits) for i in range(12))
2021-04-01 12:08:42 +00:00
def titleToTemplate(page):
return page.lower().replace(" ", "_")
def userActiveSemester(flashWarning=False):
lastSemesterId = Semester.query.all()[-1].id
if current_user.active_semester_id is None:
current_user.active_semester_id = lastSemesterId
db.session.commit()
elif current_user.active_semester_id != lastSemesterId:
activeSemester = Semester.query.get(current_user.active_semester_id)
if activeSemester:
if flashWarning:
flash(f"You are in the old semester {activeSemester.label}!", "warning")
else:
current_user.active_semester_id = lastSemesterId
db.session.commit()
flash("Semester changed!", "warning")
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):
try:
current_user.active_semester_id = Semester.query.get(int(semesterId)).id
except Exception as err:
flash(str(err))
return False
db.session.commit()
flash(f"Active semester changed to {Semester.query.get(semesterId).label}!", "warning")
return True