diff --git a/core/config.py b/core/config.py index 01392b7..4b8eb03 100644 --- a/core/config.py +++ b/core/config.py @@ -29,18 +29,9 @@ RECAPTCHA_SITE_KEY = config.get("recaptcha-site-key", "") 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"])] WEB_UI_OPTIONS["qrz-enabled"] = any(p["class"] == "QRZ" and p["enabled"] for p in config["callsign-data-providers"]) WEB_UI_OPTIONS["hamqth-enabled"] = any(p["class"] == "HamQTH" and p["enabled"] for p in config["callsign-data-providers"]) -# 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. We can also include the reCaptcha site key so the UI -# can access it. -if ALLOW_SPOTTING: - WEB_UI_OPTIONS["spot-providers-enabled-by-default"].append("API") - WEB_UI_OPTIONS["recaptcha-site-key"] = RECAPTCHA_SITE_KEY +WEB_UI_OPTIONS["recaptcha-site-key"] = RECAPTCHA_SITE_KEY WEB_UI_OPTIONS["allow-upstream-spotting"] = ALLOW_SPOTTING and ALLOW_UPSTREAM_SPOTTING diff --git a/core/status_reporter.py b/core/status_reporter.py index 7da2e4f..019d4de 100644 --- a/core/status_reporter.py +++ b/core/status_reporter.py @@ -54,7 +54,8 @@ class StatusReporter: DATA_STORE.status_data["num_spots"] = len(DATA_STORE.spots.values()) DATA_STORE.status_data["num_alerts"] = len(DATA_STORE.alerts.values()) DATA_STORE.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/providers/alert/alert_provider.py b/providers/alert/alert_provider.py index 27d019b..600474d 100644 --- a/providers/alert/alert_provider.py +++ b/providers/alert/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 = DATA_STORE.alerts diff --git a/providers/solarconditions/solar_conditions_provider.py b/providers/solarconditions/solar_conditions_provider.py index f36ecd5..0dcc221 100644 --- a/providers/solarconditions/solar_conditions_provider.py +++ b/providers/solarconditions/solar_conditions_provider.py @@ -13,7 +13,7 @@ class SolarConditionsProvider: """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._solar_conditions = DATA_STORE.solar_conditions diff --git a/providers/spot/spot_provider.py b/providers/spot/spot_provider.py index c4f14d9..fe28d59 100644 --- a/providers/spot/spot_provider.py +++ b/providers/spot/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/server/handlers/api/options.py b/server/handlers/api/options.py index d483bc1..07ee531 100644 --- a/server/handlers/api/options.py +++ b/server/handlers/api/options.py @@ -54,16 +54,22 @@ class APIOptionsHandler(tornado.web.RequestHandler): map(lambda p: p["name"], filter(lambda p: p["enabled"], self._status_data["alert_providers"]))) callsign_data_providers = list( map(lambda p: p["name"], filter(lambda p: p["enabled"], self._status_data["callsign_data_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"]))) + # If spotting to this server is enabled, "API" is another valid spot source even though it does not come from # one of our providers. if ALLOW_SPOTTING: spot_providers.append("API") + spot_providers_enabled_by_default.append("API") + options = {"bands": BANDS, "modes": ALL_MODES, "mode_types": MODE_TYPES, "sigs": SIGS, "spot_providers": spot_providers, + "spot-providers-enabled-by-default": spot_providers_enabled_by_default, "alert_providers": alert_providers, "callsign_data_providers": callsign_data_providers, "continents": CONTINENTS, diff --git a/static/js/bands.js b/static/js/bands.js index 29c47f4..0b95aa6 100644 --- a/static/js/bands.js +++ b/static/js/bands.js @@ -292,7 +292,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_providers"], spotProvidersEnabledByDefault); + generateSourcesMultiToggleFilterCard(options["spot_providers"], 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 4ddda12..6b3c6ca 100644 --- a/static/js/map.js +++ b/static/js/map.js @@ -319,7 +319,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_providers"], spotProvidersEnabledByDefault); + generateSourcesMultiToggleFilterCard(options["spot_providers"], 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 115dccc..432c59c 100644 --- a/static/js/spots.js +++ b/static/js/spots.js @@ -433,7 +433,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_providers"], spotProvidersEnabledByDefault); + generateSourcesMultiToggleFilterCard(options["spot_providers"], 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 da4ea25..7900b12 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 2d1a000..4030d8a 100644 --- a/templates/alerts.html +++ b/templates/alerts.html @@ -82,7 +82,7 @@ - + diff --git a/templates/bands.html b/templates/bands.html index e8048aa..a74c1e3 100644 --- a/templates/bands.html +++ b/templates/bands.html @@ -79,11 +79,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 %}