diff --git a/htdocs/css/admin.css b/htdocs/css/admin.css index 5c94caa..038c25c 100644 --- a/htdocs/css/admin.css +++ b/htdocs/css/admin.css @@ -82,6 +82,7 @@ table.bookmarks .frequency { padding-left: 0; } -.sdr-device-list .list-group-item { +.sdr-device-list .list-group-item, +.sdr-profile-list .list-group-item { background: initial; } \ No newline at end of file diff --git a/owrx/controllers/settings/sdr.py b/owrx/controllers/settings/sdr.py index 6ce60c7..926001e 100644 --- a/owrx/controllers/settings/sdr.py +++ b/owrx/controllers/settings/sdr.py @@ -95,6 +95,29 @@ class SdrDeviceController(SettingsFormController): variables["assets_prefix"] = "../../" return variables + def render_sections(self): + return super().render_sections() + self.render_profile_list(self.device["profiles"]) + + def render_profile_list(self, profiles): + def render_profile(profile_id, profile): + return """ +
  • + {profile_name} +
  • + """.format( + profile_name=profile["name"], + profile_link="{}/{}".format(self.request.path, quote(profile_id)), + ) + + return """ +

    Profiles

    + + """.format( + profiles="".join(render_profile(p_id, p) for p_id, p in profiles.items()) + ) + def indexAction(self): if self.device is None: self.send_response("device not found", code=404) diff --git a/owrx/http.py b/owrx/http.py index 7fd53b0..e3db2e6 100644 --- a/owrx/http.py +++ b/owrx/http.py @@ -100,11 +100,11 @@ class Router(object): self.routes = [ StaticRoute("/", IndexController), StaticRoute("/status.json", StatusController), - RegexRoute("/static/(.+)", OwrxAssetsController), - RegexRoute("/compiled/(.+)", CompiledAssetsController), - RegexRoute("/aprs-symbols/(.+)", AprsSymbolsController), + RegexRoute("^/static/(.+)$", OwrxAssetsController), + RegexRoute("^/compiled/(.+)$", CompiledAssetsController), + RegexRoute("^/aprs-symbols/(.+)$", AprsSymbolsController), StaticRoute("/ws/", WebSocketController), - RegexRoute("(/favicon.ico)", OwrxAssetsController), + RegexRoute("^(/favicon.ico)$", OwrxAssetsController), StaticRoute("/map", MapController), StaticRoute("/features", FeatureController), StaticRoute("/api/features", ApiController), @@ -116,12 +116,12 @@ class Router(object): "/settings/general", GeneralSettingsController, method="POST", options={"action": "processFormData"} ), StaticRoute("/settings/sdr", SdrDeviceListController), - RegexRoute("/settings/sdr/(.+)", SdrDeviceController), - RegexRoute("/settings/sdr/(.+)", SdrDeviceController, method="POST", options={"action": "processFormData"}), + RegexRoute("^/settings/sdr/([^/]+)$", SdrDeviceController), + RegexRoute("^/settings/sdr/([^/]+)$", SdrDeviceController, method="POST", options={"action": "processFormData"}), StaticRoute("/settings/bookmarks", BookmarksController), StaticRoute("/settings/bookmarks", BookmarksController, method="POST", options={"action": "new"}), - RegexRoute("/settings/bookmarks/(.+)", BookmarksController, method="POST", options={"action": "update"}), - RegexRoute("/settings/bookmarks/(.+)", BookmarksController, method="DELETE", options={"action": "delete"}), + RegexRoute("^/settings/bookmarks/(.+)$", BookmarksController, method="POST", options={"action": "update"}), + RegexRoute("^/settings/bookmarks/(.+)$", BookmarksController, method="DELETE", options={"action": "delete"}), StaticRoute("/settings/reporting", ReportingController), StaticRoute( "/settings/reporting", ReportingController, method="POST", options={"action": "processFormData"}