Merge pull request #42 from jr-k/develop

Release v1.12
This commit is contained in:
JRK 2024-05-12 19:41:19 +02:00 committed by GitHub
commit 6c4a2657ec
6 changed files with 29 additions and 12 deletions

View File

@ -30,3 +30,6 @@ class SettingsController(ObController):
if variable.refresh_player:
self._model_store.variable().update_by_name("refresh_player_request", time.time())
if variable.name == 'auth_enabled':
self.reload_web_server()

View File

@ -8,8 +8,9 @@ from src.interface.ObPlugin import ObPlugin
class ObController(abc.ABC):
def __init__(self, app, auth_required, model_store: ModelStore, template_renderer: TemplateRenderer, plugin: Optional[ObPlugin] = None):
def __init__(self, web_server, app, auth_required, model_store: ModelStore, template_renderer: TemplateRenderer, plugin: Optional[ObPlugin] = None):
self._app = app
self._web_server = web_server
self._auth = auth_required
self._model_store = model_store
self._template_renderer = template_renderer
@ -26,3 +27,5 @@ class ObController(abc.ABC):
return self._plugin
def reload_web_server(self):
self._web_server.reload()

View File

@ -56,6 +56,9 @@ class UserManager(ModelManager):
def get_one_by_username(self, username: str, enabled: bool = None) -> Optional[User]:
return self.get_one_by(query=lambda v: v['username'] == username and (enabled is None or v['enabled'] == enabled))
def count_all(self):
return len(self.get_all())
def get_all(self, sort: bool = False) -> List[User]:
raw_users = self._db.get_all()

View File

@ -202,10 +202,15 @@ class VariableManager(ModelManager):
return [variable for variable in self.get_all() if not variable.editable]
def update_form(self, id: str, value: Union[int, bool, str]) -> None:
self._db.update_by_id(id, {"value": value})
var_dict = self._db.update_by_id(id, {"value": value})
var = self.hydrate_object(var_dict, id)
self._var_map[var.name] = var
def update_by_name(self, name: str, value) -> Optional[Variable]:
return self._db.update_by_query(query=lambda v: v['name'] == name, new_data={"value": value})
[var_id] = self._db.update_by_query(query=lambda v: v['name'] == name, new_data={"value": value})
var_dict = self._db.get_by_id(var_id)
var = self.hydrate_object(var_dict, id)
self._var_map[name] = var
def add_form(self, variable: Union[Variable, Dict]) -> None:
form = variable

View File

@ -36,6 +36,9 @@ class WebServer:
port=self._model_store.config().map().get('port')
)
def reload(self) -> None:
self.setup()
def setup(self) -> None:
self._setup_flask_app()
self._setup_web_globals()
@ -77,6 +80,9 @@ class WebServer:
self._login_manager.init_app(self._app)
self._login_manager.login_view = 'login'
if self._model_store.user().count_all() == 0:
self._model_store.user().add_form(User(username="admin", password="admin", enabled=True))
@self._login_manager.user_loader
def load_user(user_id):
return self._model_store.user().get(user_id)
@ -95,16 +101,16 @@ class WebServer:
return decorated_function
PlayerController(self._app, auth_required, self._model_store, self._template_renderer)
SlideshowController(self._app, auth_required, self._model_store, self._template_renderer)
SettingsController(self._app, auth_required, self._model_store, self._template_renderer)
SysinfoController(self._app, auth_required, self._model_store, self._template_renderer)
PlayerController(self, self._app, auth_required, self._model_store, self._template_renderer)
SlideshowController(self, self._app, auth_required, self._model_store, self._template_renderer)
SettingsController(self, self._app, auth_required, self._model_store, self._template_renderer)
SysinfoController(self, self._app, auth_required, self._model_store, self._template_renderer)
if self._model_store.variable().map().get('fleet_enabled').as_bool():
FleetController(self._app, auth_required, self._model_store, self._template_renderer)
FleetController(self, self._app, auth_required, self._model_store, self._template_renderer)
if self._login_manager:
AuthController(self._app, auth_required, self._model_store, self._template_renderer)
AuthController(self, self._app, auth_required, self._model_store, self._template_renderer)
def _setup_web_globals(self) -> None:
@self._app.context_processor

View File

@ -6,9 +6,6 @@
<form action="/settings/variable/edit" method="POST">
<input type="hidden" name="id" id="variable-edit-id" />
<div class="form-group">
<label for="variable-edit-name" class="hidden">{{ l.settings_variable_form_label_name }}</label>
<div class="widget">