diff --git a/bemani/data/config.py b/bemani/data/config.py index 89b0021..fca86ce 100644 --- a/bemani/data/config.py +++ b/bemani/data/config.py @@ -193,6 +193,10 @@ class Config(dict): def cache_dir(self) -> str: return os.path.abspath(str(self.get('cache_dir', '/tmp'))) + @property + def theme(self) -> str: + return str(self.get('theme', 'default')) + @property def event_log_duration(self) -> Optional[int]: duration = self.get('event_log_duration') diff --git a/bemani/frontend/app.py b/bemani/frontend/app.py index aeff493..0c03c07 100644 --- a/bemani/frontend/app.py +++ b/bemani/frontend/app.py @@ -235,6 +235,20 @@ def valid_pin(pin: str, type: str) -> bool: return False +# Define useful functions for jnija2 +def jinja2_any(lval: Optional[List[Any]], pull: str, equals: str) -> bool: + if lval is None: + return False + for entry in lval: + if entry[pull] == equals: + return True + return False + + +def jinja2_theme(filename: str) -> str: + return url_for('static', filename=f"{config.theme}/{filename}") + + @app.context_processor def navigation() -> Dict[str, Any]: # Look up JSX components we should provide for every page load @@ -244,15 +258,6 @@ def navigation() -> Dict[str, Any]: if re.search(r'\.react\.js$', f) ] - # Define useful functions for jnija2 - def jinja2_any(lval: Optional[List[Any]], pull: str, equals: str) -> bool: - if lval is None: - return False - for entry in lval: - if entry[pull] == equals: - return True - return False - # Look up the logged in user ID. try: if g.userID is not None: @@ -262,6 +267,7 @@ def navigation() -> Dict[str, Any]: return { 'components': components, 'any': jinja2_any, + 'theme_url': jinja2_theme, } except AttributeError: # If we are trying to render a 500 error and we couldn't even run the @@ -270,6 +276,7 @@ def navigation() -> Dict[str, Any]: return { 'components': components, 'any': jinja2_any, + 'theme_url': jinja2_theme, } pages: List[Dict[str, Any]] = [] @@ -747,4 +754,5 @@ def navigation() -> Dict[str, Any]: 'navigation': pages, 'components': components, 'any': jinja2_any, + 'theme_url': jinja2_theme, } diff --git a/bemani/frontend/static/color.css b/bemani/frontend/static/default/color.css similarity index 100% rename from bemani/frontend/static/color.css rename to bemani/frontend/static/default/color.css diff --git a/bemani/frontend/static/favicon.png b/bemani/frontend/static/default/favicon.png similarity index 100% rename from bemani/frontend/static/favicon.png rename to bemani/frontend/static/default/favicon.png diff --git a/bemani/frontend/static/form.css b/bemani/frontend/static/default/form.css similarity index 100% rename from bemani/frontend/static/form.css rename to bemani/frontend/static/default/form.css diff --git a/bemani/frontend/static/section.css b/bemani/frontend/static/default/section.css similarity index 100% rename from bemani/frontend/static/section.css rename to bemani/frontend/static/default/section.css diff --git a/bemani/frontend/static/site.css b/bemani/frontend/static/default/site.css similarity index 100% rename from bemani/frontend/static/site.css rename to bemani/frontend/static/default/site.css diff --git a/bemani/frontend/static/table.css b/bemani/frontend/static/default/table.css similarity index 100% rename from bemani/frontend/static/table.css rename to bemani/frontend/static/default/table.css diff --git a/bemani/frontend/templates/base.html b/bemani/frontend/templates/base.html index dc075cb..3d18a95 100644 --- a/bemani/frontend/templates/base.html +++ b/bemani/frontend/templates/base.html @@ -3,12 +3,12 @@ {% if title %}