diff --git a/alertproviders/alert_provider.py b/alertproviders/alert_provider.py index 9645e97..58246dd 100644 --- a/alertproviders/alert_provider.py +++ b/alertproviders/alert_provider.py @@ -12,7 +12,7 @@ class AlertProvider: """Constructor""" self.name = name - self.enabled = provider_config["enabled"] + self.enabled = provider_config.get("enabled", True) self.last_update_time = datetime.min.replace(tzinfo=pytz.UTC) self.status = "Not Started" if self.enabled else "Disabled" self._alerts = None diff --git a/core/config.py b/core/config.py index 4cb43c8..d04c957 100644 --- a/core/config.py +++ b/core/config.py @@ -24,12 +24,3 @@ WEB_UI_OPTIONS = config["web-ui-options"] API_ONLY_MODE = config.get("api-only-mode", False) LOG_LEVEL = config.get("log-level", "INFO") LOG_WEB_REQUESTS = config.get("log-web-requests", False) - -# For ease of config, each spot provider owns its own config about whether it should be enabled by default in the web UI -# but for consistency we provide this to the front-end in web-ui-options because it has no impact outside of the web UI. -WEB_UI_OPTIONS["spot-providers-enabled-by-default"] = [p["name"] for p in config["spot-providers"] if p["enabled"] and ( - "enabled-by-default-in-web-ui" not in p or p["enabled-by-default-in-web-ui"])] -# If spotting to this server is enabled, "API" is another valid spot source even though it does not come from -# one of our proviers. We set that to also be enabled by default. -if ALLOW_SPOTTING: - WEB_UI_OPTIONS["spot-providers-enabled-by-default"].append("API") diff --git a/core/status_reporter.py b/core/status_reporter.py index ff6e39a..0c76c9e 100644 --- a/core/status_reporter.py +++ b/core/status_reporter.py @@ -60,7 +60,8 @@ class StatusReporter: self._status_data["num_spots"] = len(self._spots) self._status_data["num_alerts"] = len(self._alerts) self._status_data["spot_providers"] = list( - map(lambda p: {"name": p.name, "enabled": p.enabled, "status": p.status, + map(lambda p: {"name": p.name, "enabled": p.enabled, + "enabled_by_default_in_web_ui": p.enabled_by_default_in_web_ui, "status": p.status, "last_updated": p.last_update_time.replace( tzinfo=pytz.UTC).timestamp() if p.last_update_time.year > 2000 else 0, "last_spot": p.last_spot_time.replace( diff --git a/server/handlers/api/options.py b/server/handlers/api/options.py index 1ec6c00..bcfff75 100644 --- a/server/handlers/api/options.py +++ b/server/handlers/api/options.py @@ -39,9 +39,14 @@ class APIOptionsHandler(tornado.web.RequestHandler): "sigs": SIGS, # Spot/alert sources are filtered for only ones that are enabled in config, no point letting the user toggle things that aren't even available. "spot_sources": list( - map(lambda p: p["name"], filter(lambda p: p["enabled"], self._status_data["spot_providers"]))), + map(lambda p: p["name"], + filter(lambda p: p["enabled"], self._status_data["spot_providers"]))), + "spot-providers-enabled-by-default": list( + map(lambda p: p["name"], filter(lambda p: p["enabled"] and p["enabled_by_default_in_web_ui"], + self._status_data["spot_providers"]))), "alert_sources": list( - map(lambda p: p["name"], filter(lambda p: p["enabled"], self._status_data["alert_providers"]))), + map(lambda p: p["name"], + filter(lambda p: p["enabled"], self._status_data["alert_providers"]))), "continents": CONTINENTS, "propagation_modes": list(PROPAGATION_MODES.values()), "max_spot_age": MAX_SPOT_AGE, @@ -50,6 +55,7 @@ class APIOptionsHandler(tornado.web.RequestHandler): # one of our proviers. if ALLOW_SPOTTING: options["spot_sources"].append("API") + options["spot-providers-enabled-by-default"].append("API") self.write(safe_json_dumps(options)) self.set_status(200) diff --git a/solarconditionsproviders/solar_conditions_provider.py b/solarconditionsproviders/solar_conditions_provider.py index bc939f7..32b65e3 100644 --- a/solarconditionsproviders/solar_conditions_provider.py +++ b/solarconditionsproviders/solar_conditions_provider.py @@ -12,7 +12,7 @@ class SolarConditionsProvider: self._solar_conditions_cache = None self.name = name - self.enabled = provider_config["enabled"] + self.enabled = provider_config.get("enabled", True) self.last_update_time = datetime.min.replace(tzinfo=pytz.UTC) self.status = "Not Started" if self.enabled else "Disabled" self._solar_conditions = None diff --git a/spotproviders/spot_provider.py b/spotproviders/spot_provider.py index 6b19a2c..d581ca5 100644 --- a/spotproviders/spot_provider.py +++ b/spotproviders/spot_provider.py @@ -12,7 +12,8 @@ class SpotProvider: """Constructor""" self.name = name - self.enabled = provider_config["enabled"] + self.enabled = provider_config.get("enabled", True) + self.enabled_by_default_in_web_ui = provider_config.get("enabled-by-default-in-web-ui", True) self.last_update_time = datetime.min.replace(tzinfo=pytz.UTC) self.last_spot_time = datetime.min.replace(tzinfo=pytz.UTC) self.status = "Not Started" if self.enabled else "Disabled" diff --git a/static/js/bands.js b/static/js/bands.js index 9166ce5..d468058 100644 --- a/static/js/bands.js +++ b/static/js/bands.js @@ -291,7 +291,7 @@ function loadOptions() { generateMultiToggleFilterCard("#dx-continent-options", "dx_continent", options["continents"]); generateMultiToggleFilterCard("#de-continent-options", "de_continent", options["continents"]); generateModesMultiToggleFilterCard(options["modes"]); - generateSourcesMultiToggleFilterCard(options["spot_sources"], spotProvidersEnabledByDefault); + generateSourcesMultiToggleFilterCard(options["spot_sources"], options["spot-providers-enabled-by-default"]); // Load URL params. These may select things from the various filter & display options, so the function needs // to be called after these are set up, but if the URL params ask for "embedded mode", this will suppress diff --git a/static/js/map.js b/static/js/map.js index c6b0f1e..92a1621 100644 --- a/static/js/map.js +++ b/static/js/map.js @@ -322,7 +322,7 @@ function loadOptions() { generateMultiToggleFilterCard("#dx-continent-options", "dx_continent", options["continents"]); generateMultiToggleFilterCard("#de-continent-options", "de_continent", options["continents"]); generateModesMultiToggleFilterCard(options["modes"]); - generateSourcesMultiToggleFilterCard(options["spot_sources"], spotProvidersEnabledByDefault); + generateSourcesMultiToggleFilterCard(options["spot_sources"], options["spot-providers-enabled-by-default"]); // Load URL params. These may select things from the various filter & display options, so the function needs // to be called after these are set up, but if the URL params ask for "embedded mode", this will suppress diff --git a/static/js/spots.js b/static/js/spots.js index c0d4375..063c728 100644 --- a/static/js/spots.js +++ b/static/js/spots.js @@ -436,7 +436,7 @@ function loadOptions() { generateMultiToggleFilterCard("#dx-continent-options", "dx_continent", options["continents"]); generateMultiToggleFilterCard("#de-continent-options", "de_continent", options["continents"]); generateModesMultiToggleFilterCard(options["modes"]); - generateSourcesMultiToggleFilterCard(options["spot_sources"], spotProvidersEnabledByDefault); + generateSourcesMultiToggleFilterCard(options["spot_sources"], options["spot-providers-enabled-by-default"]); // Load URL params. These may select things from the various filter & display options, so the function needs // to be called after these are set up, but if the URL params ask for "embedded mode", this will suppress diff --git a/templates/add_spot.html b/templates/add_spot.html index 14603ae..afa57ca 100644 --- a/templates/add_spot.html +++ b/templates/add_spot.html @@ -76,7 +76,7 @@ - + diff --git a/templates/alerts.html b/templates/alerts.html index 16436af..19a5963 100644 --- a/templates/alerts.html +++ b/templates/alerts.html @@ -75,7 +75,7 @@ - + diff --git a/templates/bands.html b/templates/bands.html index 0355efa..98b91bb 100644 --- a/templates/bands.html +++ b/templates/bands.html @@ -72,11 +72,8 @@ - - - + + diff --git a/templates/base.html b/templates/base.html index ac97800..80062e9 100644 --- a/templates/base.html +++ b/templates/base.html @@ -1,6 +1,6 @@ {% extends "skeleton.html" %} {% block head_extra %} - + @@ -10,10 +10,10 @@ - - - - + + + + {% end %} {% block body %}