diff --git a/data/www/templates/base.html b/data/www/templates/base.html index 5e2c087..b49e7fd 100644 --- a/data/www/templates/base.html +++ b/data/www/templates/base.html @@ -6,9 +6,6 @@ table, th, td {border: 1px solid black;} - {% if fhdhr.config.dict["web_ui"]["theme"] %} - - {% endif %}

diff --git a/fHDHR/http/__init__.py b/fHDHR/http/__init__.py index bcf167e..5cb55db 100644 --- a/fHDHR/http/__init__.py +++ b/fHDHR/http/__init__.py @@ -1,5 +1,5 @@ from gevent.pywsgi import WSGIServer -from flask import Flask +from flask import Flask, request from .pages import fHDHR_Pages from .files import fHDHR_Files @@ -35,6 +35,16 @@ class fHDHR_HTTP_Server(): self.watch = fHDHR_WATCH(fhdhr) self.add_endpoints(self.watch, "watch") + self.app.before_request(self.before_request) + self.app.after_request(self.after_request) + + def before_request(self): + self.fhdhr.logger.debug("") + + def after_request(self, response): + self.fhdhr.logger.debug("") + return response + def add_endpoints(self, index_list, index_name): item_list = [x for x in dir(index_list) if self.isapath(x)] for item in item_list: diff --git a/fHDHR/http/files/style_css.py b/fHDHR/http/files/style_css.py index b5a1598..d51a7b2 100644 --- a/fHDHR/http/files/style_css.py +++ b/fHDHR/http/files/style_css.py @@ -1,4 +1,6 @@ -from flask import send_from_directory +from flask import Response +import pathlib +from io import StringIO class Style_CSS(): @@ -8,10 +10,35 @@ class Style_CSS(): def __init__(self, fhdhr): self.fhdhr = fhdhr + self.internal_style_file = pathlib.Path( + self.fhdhr.config.internal["paths"]["www_dir"]).joinpath('style.css') + + self.internal_style = StringIO() + self.internal_style.write(open(self.internal_style_file).read()) + + self.pull_external_theme() + + def pull_external_theme(self): + self.external_style = None + self.external_style_address = None + if self.fhdhr.config.dict["web_ui"]["theme"]: + if self.fhdhr.config.dict["web_ui"]["theme"].startswith(tuple(["http://", "https://"])): + css_req = self.fhdhr.web.session.get(self.fhdhr.config.dict["web_ui"]["theme"]) + self.external_style = StringIO(css_req.text) + self.external_style_address = self.fhdhr.config.dict["web_ui"]["theme"] + def __call__(self, *args): return self.get(*args) def get(self, *args): - return send_from_directory(self.fhdhr.config.internal["paths"]["www_dir"], - 'style.css') + main_output = StringIO() + + main_output.write(self.internal_style.getvalue()) + if self.fhdhr.config.dict["web_ui"]["theme"]: + if self.fhdhr.config.dict["web_ui"]["theme"] != self.external_style_address: + self.pull_external_theme() + if self.external_style: + main_output.write(self.external_style.getvalue()) + + return Response(status=200, response=main_output.getvalue(), mimetype="text/css")