Files
sensors/templating.py
2025-12-15 23:07:19 +01:00

97 lines
2.8 KiB
Python

from flask import url_for
from flask_login import current_user
import tomllib
def static_test_load():
with open("static_text.toml", "rb") as f:
return tomllib.load(f)
# base class for inheriting other more specific pages
class BasePage():
def __init__(
self,
jijna_env,
userinfo,
roominfo,
target_path = "base.html.jinja" ,
statictext = None,
) -> None:
self.env = jijna_env
self.target = target_path
self.rendervars = static_test_load() if statictext is None else statictext
self.rendervars["userinfo"] = userinfo
self.rendervars["roominfo"] = roominfo
def render(self):
url_for('static', filename="styles.css")
url_for('static', filename="scripts.css")
template = self.env.get_template(self.target)
return template.render(self.rendervars)
class LandingPage(BasePage):
def __init__(
self,
jinja_env,
userinfo,
roominfo,
target_path="landing.html.jinja",
statictext=None,
) -> None:
super().__init__(jinja_env, userinfo, roominfo, target_path, statictext)
class LoginPage(BasePage):
def __init__(
self,
jinja_env,
userinfo,
roominfo,
target_path="login.html.jinja",
statictext=None,
) -> None:
super().__init__(jinja_env, userinfo, roominfo, target_path, statictext)
class EmptyRoom(BasePage):
def __init__(
self,
jinja_env,
userinfo,
roominfo,
current_room,
target_path="empty_room.html.jinja",
statictext=None,
) -> None:
super().__init__(jinja_env, userinfo, roominfo, target_path, statictext)
self.rendervars["current_room"] = current_room
class RoomPage(BasePage):
def __init__(
self,
jinja_env,
userinfo,
roominfo,
current_room,
sensorinfolist,
fig,
target_path="room.html.jinja",
statictext=None,
) -> None:
super().__init__(jinja_env, userinfo, roominfo, target_path, statictext)
self.rendervars["current_room"] = current_room
self.rendervars["sensorinfolist"] = sensorinfolist
self.rendervars["fig"] = fig
class UserManagementPage(BasePage):
def __init__(
self,
jinja_env,
userinfo,
roominfo,
userlist,
admin,
target_path="users.html.jinja",
statictext=None,
) -> None:
super().__init__(jinja_env, userinfo, roominfo, target_path, statictext)
self.rendervars["userlist"] = userlist
self.rendervars["admin"] = admin