-
![OpenWebRX Logo](${assets_prefix}static/gfx/openwebrx-top-logo.png)
-
![Receiver avatar](${assets_prefix}static/gfx/openwebrx-avatar.png)
+
![OpenWebRX Logo](${document_root}static/gfx/openwebrx-top-logo.png)
+
${receiver_name}
${receiver_location} | Loc: ${locator}, ASL: ${receiver_asl} m
@@ -10,8 +10,8 @@
Status
Log
Receiver
-
Map
-
Settings
+
Map
+
Settings
diff --git a/htdocs/settings/general.html b/htdocs/settings/general.html
index 1e6724d..dbe4b65 100644
--- a/htdocs/settings/general.html
+++ b/htdocs/settings/general.html
@@ -2,11 +2,11 @@
OpenWebRX Settings
-
-
-
+
+
+
-
+
diff --git a/owrx/controllers/settings/__init__.py b/owrx/controllers/settings/__init__.py
index e0ea25c..a7ff055 100644
--- a/owrx/controllers/settings/__init__.py
+++ b/owrx/controllers/settings/__init__.py
@@ -68,16 +68,10 @@ class SettingsFormController(AuthorizationMixin, WebpageController, metaclass=AB
def indexAction(self):
self.serve_template("settings/general.html", **self.template_variables())
- def header_variables(self):
- variables = super().header_variables()
- variables["assets_prefix"] = "../"
- return variables
-
def template_variables(self):
variables = super().template_variables()
variables["content"] = self.render_sections()
variables["title"] = self.getTitle()
- variables["assets_prefix"] = "../"
return variables
def parseFormData(self):
diff --git a/owrx/controllers/settings/bookmarks.py b/owrx/controllers/settings/bookmarks.py
index 4ece8dd..83c9840 100644
--- a/owrx/controllers/settings/bookmarks.py
+++ b/owrx/controllers/settings/bookmarks.py
@@ -10,11 +10,6 @@ logger = logging.getLogger(__name__)
class BookmarksController(AuthorizationMixin, WebpageController):
- def header_variables(self):
- variables = super().header_variables()
- variables["assets_prefix"] = "../"
- return variables
-
def template_variables(self):
variables = super().template_variables()
variables["bookmarks"] = self.render_table()
diff --git a/owrx/controllers/settings/sdr.py b/owrx/controllers/settings/sdr.py
index 4b28c68..447552f 100644
--- a/owrx/controllers/settings/sdr.py
+++ b/owrx/controllers/settings/sdr.py
@@ -13,16 +13,10 @@ from abc import ABCMeta
class SdrDeviceListController(AuthorizationMixin, WebpageController):
- def header_variables(self):
- variables = super().header_variables()
- variables["assets_prefix"] = "../"
- return variables
-
def template_variables(self):
variables = super().template_variables()
variables["content"] = self.render_devices()
variables["title"] = "SDR device settings"
- variables["assets_prefix"] = "../"
return variables
def render_devices(self):
@@ -134,16 +128,6 @@ class SdrDeviceController(SdrFormController):
def getTitle(self):
return self.device["name"]
- def header_variables(self):
- variables = super().header_variables()
- variables["assets_prefix"] = "../../"
- return variables
-
- def template_variables(self):
- variables = super().template_variables()
- variables["assets_prefix"] = "../../"
- return variables
-
def render_sections(self):
return super().render_sections() + self.render_profile_list(self.device["profiles"])
@@ -189,16 +173,6 @@ class NewSdrDeviceController(SettingsFormController):
self.stack.addLayer(0, id_layer)
self.stack.addLayer(1, self.data_layer)
- def header_variables(self):
- variables = super().header_variables()
- variables["assets_prefix"] = "../../"
- return variables
-
- def template_variables(self):
- variables = super().template_variables()
- variables["assets_prefix"] = "../../"
- return variables
-
def getSections(self):
return [
Section(
@@ -251,16 +225,6 @@ class SdrProfileController(SdrFormController):
def getTitle(self):
return self.profile["name"]
- def header_variables(self):
- variables = super().header_variables()
- variables["assets_prefix"] = "../../../"
- return variables
-
- def template_variables(self):
- variables = super().template_variables()
- variables["assets_prefix"] = "../../../"
- return variables
-
def indexAction(self):
if self.profile is None:
self.send_response("profile not found", code=404)
diff --git a/owrx/controllers/template.py b/owrx/controllers/template.py
index 253e7b7..a577b6a 100644
--- a/owrx/controllers/template.py
+++ b/owrx/controllers/template.py
@@ -19,14 +19,19 @@ class TemplateController(Controller):
class WebpageController(TemplateController):
+ def get_document_root(self):
+ path_parts = [part for part in self.request.path[1:].split("/")]
+ levels = max(0, len(path_parts) - 1)
+ return "../" * levels
+
def header_variables(self):
- variables = {"assets_prefix": ""}
+ variables = {"document_root": self.get_document_root()}
variables.update(ReceiverDetails().__dict__())
return variables
def template_variables(self):
header = self.render_template("include/header.include.html", **self.header_variables())
- return {"header": header}
+ return {"header": header, "document_root": self.get_document_root()}
class IndexController(WebpageController):
diff --git a/owrx/http.py b/owrx/http.py
index 4c16938..bf8ddc3 100644
--- a/owrx/http.py
+++ b/owrx/http.py
@@ -40,23 +40,23 @@ class RequestHandler(BaseHTTPRequestHandler):
logger.debug("%s - - [%s] %s", self.address_string(), self.log_date_time_string(), format % args)
def do_GET(self):
- self.router.route(self, self.get_request("GET"))
+ self.router.route(self, self._build_request("GET"))
def do_POST(self):
- self.router.route(self, self.get_request("POST"))
+ self.router.route(self, self._build_request("POST"))
def do_DELETE(self):
- self.router.route(self, self.get_request("DELETE"))
+ self.router.route(self, self._build_request("DELETE"))
- def get_request(self, method):
- url = urlparse(self.path)
- return Request(url, method, self.headers)
+ def _build_request(self, method):
+ return Request(self.path, method, self.headers)
class Request(object):
def __init__(self, url, method, headers):
- self.path = url.path
- self.query = parse_qs(url.query)
+ parsed_url = urlparse(url)
+ self.path = parsed_url.path
+ self.query = parse_qs(parsed_url.query)
self.matches = None
self.method = method
self.headers = headers