config migration for receiver_gps
This commit is contained in:
parent
2b7d6738f1
commit
fd9e913a49
@ -219,8 +219,8 @@
|
||||
|
||||
map = new google.maps.Map($('.openwebrx-map')[0], {
|
||||
center: {
|
||||
lat: config.receiver_gps[0],
|
||||
lng: config.receiver_gps[1]
|
||||
lat: config.receiver_gps.lat,
|
||||
lng: config.receiver_gps.lon
|
||||
},
|
||||
zoom: 5,
|
||||
mapTypeId: mapTypeId
|
||||
|
@ -1097,7 +1097,7 @@ function on_ws_recv(evt) {
|
||||
case "receiver_details":
|
||||
var r = json['value'];
|
||||
e('webrx-rx-title').innerHTML = r['receiver_name'];
|
||||
var query = encodeURIComponent(r['receiver_gps'][0] + ',' + r['receiver_gps'][1]);
|
||||
var query = encodeURIComponent(r['receiver_gps']['lat'] + ',' + r['receiver_gps']['lon']);
|
||||
e('webrx-rx-desc').innerHTML = r['receiver_location'] + ' | Loc: ' + r['locator'] + ', ASL: ' + r['receiver_asl'] + ' m, <a href="https://www.google.com/maps/search/?api=1&query=' + query + '" target="_blank" onclick="dont_toggle_rx_photo();">[maps]</a>';
|
||||
e('webrx-rx-photo-title').innerHTML = r['photo_title'];
|
||||
e('webrx-rx-photo-desc').innerHTML = r['photo_desc'];
|
||||
|
@ -3,6 +3,7 @@ import importlib.util
|
||||
import os
|
||||
import logging
|
||||
import json
|
||||
from abc import ABC, abstractmethod
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@ -20,8 +21,27 @@ class ConfigError(object):
|
||||
return "Configuration Error (key: {0}): {1}".format(self.key, self.message)
|
||||
|
||||
|
||||
class ConfigMigrator(ABC):
|
||||
@abstractmethod
|
||||
def migrate(self, config):
|
||||
pass
|
||||
|
||||
|
||||
class ConfigMigratorVersion1(ConfigMigrator):
|
||||
def migrate(self, config):
|
||||
gps = config["receiver_gps"]
|
||||
config["receiver_gps"] = {"lat": gps[0], "lon": gps[1]}
|
||||
|
||||
config["version"] = 2
|
||||
return config
|
||||
|
||||
|
||||
class Config:
|
||||
sharedConfig = None
|
||||
currentVersion = 2
|
||||
migrators = {
|
||||
1: ConfigMigratorVersion1()
|
||||
}
|
||||
|
||||
@staticmethod
|
||||
def _loadPythonFile(file):
|
||||
@ -45,7 +65,7 @@ class Config:
|
||||
|
||||
@staticmethod
|
||||
def _loadConfig():
|
||||
for file in ["settings.json", "/etc/openwebrx/config_webrx.py", "./config_webrx.py"]:
|
||||
for file in ["./settings.json", "/etc/openwebrx/config_webrx.py", "./config_webrx.py"]:
|
||||
try:
|
||||
if file.endswith(".py"):
|
||||
return Config._loadPythonFile(file)
|
||||
@ -60,7 +80,7 @@ class Config:
|
||||
@staticmethod
|
||||
def get():
|
||||
if Config.sharedConfig is None:
|
||||
Config.sharedConfig = Config._loadConfig()
|
||||
Config.sharedConfig = Config._migrate(Config._loadConfig())
|
||||
return Config.sharedConfig
|
||||
|
||||
@staticmethod
|
||||
@ -89,3 +109,13 @@ class Config:
|
||||
if not os.access(pm[key], os.W_OK):
|
||||
return ConfigError(key, "temporary directory is not writable")
|
||||
return None
|
||||
|
||||
@staticmethod
|
||||
def _migrate(config):
|
||||
version = config["version"] if "version" in config else 1
|
||||
if version == Config.currentVersion:
|
||||
return config
|
||||
|
||||
logger.debug("migrating config from version %i", version)
|
||||
migrator = Config.migrators[version]
|
||||
return migrator.migrate(config)
|
||||
|
@ -10,6 +10,8 @@ import json
|
||||
class StatusController(Controller):
|
||||
def indexAction(self):
|
||||
pm = Config.get()
|
||||
# convert to old format
|
||||
gps = (pm["receiver_gps"]["lat"], pm["receiver_gps"]["lon"])
|
||||
# TODO keys that have been left out since they are no longer simple strings: sdr_hw, bands, antenna
|
||||
vars = {
|
||||
"status": "active",
|
||||
@ -17,7 +19,7 @@ class StatusController(Controller):
|
||||
"op_email": pm["receiver_admin"],
|
||||
"users": ClientRegistry.getSharedInstance().clientCount(),
|
||||
"users_max": pm["max_clients"],
|
||||
"gps": pm["receiver_gps"],
|
||||
"gps": gps,
|
||||
"asl": pm["receiver_asl"],
|
||||
"loc": pm["receiver_location"],
|
||||
"sw_version": openwebrx_version,
|
||||
@ -44,12 +46,11 @@ class StatusController(Controller):
|
||||
def jsonAction(self):
|
||||
pm = Config.get()
|
||||
|
||||
gps = pm["receiver_gps"]
|
||||
status = {
|
||||
"receiver": {
|
||||
"name": pm["receiver_name"],
|
||||
"admin": pm["receiver_admin"],
|
||||
"gps": {"lat": gps[0], "lon": gps[1]},
|
||||
"gps": pm["receiver_gps"],
|
||||
"asl": pm["receiver_asl"],
|
||||
"location": pm["receiver_location"],
|
||||
},
|
||||
|
@ -39,7 +39,8 @@ IGLOGIN {callsign} {password}
|
||||
)
|
||||
|
||||
if pm["aprs_igate_beacon"]:
|
||||
(lat, lon) = pm["receiver_gps"]
|
||||
lat = pm["receiver_gps"]["lat"]
|
||||
lon = pm["receiver_gps"]["lon"]
|
||||
direction_ns = "N" if lat > 0 else "S"
|
||||
direction_we = "E" if lon > 0 else "W"
|
||||
lat = abs(lat)
|
||||
|
@ -2,7 +2,8 @@ class Locator(object):
|
||||
@staticmethod
|
||||
def fromCoordinates(coordinates, depth=3):
|
||||
|
||||
lat, lon = coordinates
|
||||
lat = coordinates["lat"]
|
||||
lon = coordinates["lon"]
|
||||
|
||||
lon = lon + 180
|
||||
lat = lat + 90
|
||||
|
@ -135,7 +135,8 @@ class DaylightSchedule(TimerangeSchedule):
|
||||
|
||||
def getSunTimes(self, date):
|
||||
pm = Config.get()
|
||||
lat, lng = pm["receiver_gps"]
|
||||
lat = pm["receiver_gps"]["lat"]
|
||||
lng = pm["receiver_gps"]["lon"]
|
||||
degtorad = math.pi / 180
|
||||
radtodeg = 180 / math.pi
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user