mirror of
https://codeberg.org/Mo8it/AdvLabDB.git
synced 2024-12-20 23:41:20 +00:00
Added changing active semester from admin view
This commit is contained in:
parent
6d32b1840d
commit
868c1e2d4d
4 changed files with 31 additions and 9 deletions
|
@ -1,11 +1,24 @@
|
|||
from flask_admin import AdminIndexView
|
||||
from flask_admin.contrib.sqla import ModelView
|
||||
from flask_security import current_user
|
||||
from flask import flash
|
||||
from flask_admin.contrib.sqla import ModelView
|
||||
|
||||
from advlabdb.utils import userActiveSemester
|
||||
|
||||
|
||||
def adminViewIsAccessible():
|
||||
return current_user.has_role("admin")
|
||||
|
||||
def handleAdminView():
|
||||
flash("User active semester: " + userActiveSemester(flashWarning=True).label)
|
||||
|
||||
class SecureAdminIndexView(AdminIndexView):
|
||||
def is_accessible(self):
|
||||
return current_user.has_role("admin")
|
||||
return adminViewIsAccessible()
|
||||
|
||||
def _handle_view(self, *args, **kwargs):
|
||||
handleAdminView()
|
||||
return super()._handle_view(*args, **kwargs)
|
||||
|
||||
|
||||
class SecureModelView(ModelView):
|
||||
|
@ -13,4 +26,8 @@ class SecureModelView(ModelView):
|
|||
can_set_page_size = True
|
||||
|
||||
def is_accessible(self):
|
||||
return current_user.has_role("admin")
|
||||
return adminViewIsAccessible()
|
||||
|
||||
def _handle_view(self, *args, **kwargs):
|
||||
handleAdminView()
|
||||
return super()._handle_view(*args, **kwargs)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
from flask import url_for, render_template, flash, request
|
||||
from advlabdb.customClasses import SecureModelView
|
||||
from flask_admin.menu import MenuLink
|
||||
from flask_admin.contrib.sqla.filters import BaseSQLAFilter
|
||||
from flask_security import hash_password
|
||||
|
@ -9,7 +8,7 @@ from wtforms.validators import DataRequired, Email
|
|||
from advlabdb import admin, app, user_datastore, db
|
||||
from advlabdb.models import *
|
||||
from advlabdb.utils import randomPassword, userActiveSemester, partFromLabelInUserActiveSemester
|
||||
|
||||
from advlabdb.customClasses import SecureModelView
|
||||
|
||||
partsLabels = ["A/1", "A/2", "A/m", "B/1", "B/2"]
|
||||
|
||||
|
@ -168,4 +167,8 @@ admin.add_view(UserModelView(User, db.session))
|
|||
admin.add_view(RoleModelView(Role, db.session))
|
||||
|
||||
with app.app_context():
|
||||
admin.add_link(MenuLink(name="Home", url=url_for("index"), category="Links"))
|
||||
semesters = Semester.query.all()
|
||||
for semester in semesters:
|
||||
admin.add_link(MenuLink(name=semester.label,
|
||||
url=url_for("set_semester") + "?semester_id=" + str(semester.id),
|
||||
category="Active semester"))
|
||||
|
|
|
@ -164,4 +164,5 @@ def deactivate_users():
|
|||
def set_semester():
|
||||
current_user.active_semester_id = int(request.args.get("semester_id"))
|
||||
db.session.commit()
|
||||
return redirect(url_for("index"))
|
||||
flash("Active semester changed!", "warning")
|
||||
return redirect(request.referrer)
|
||||
|
|
|
@ -72,7 +72,7 @@ def titleToTemplate(page):
|
|||
return page.lower().replace(" ", "_")
|
||||
|
||||
|
||||
def userActiveSemester():
|
||||
def userActiveSemester(flashWarning=False):
|
||||
lastSemesterId = Semester.query.all()[-1].id
|
||||
if current_user.active_semester_id is None:
|
||||
current_user.active_semester_id = lastSemesterId
|
||||
|
@ -80,6 +80,7 @@ def userActiveSemester():
|
|||
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
|
||||
|
|
Loading…
Reference in a new issue