diff --git a/server/webserver.py b/server/webserver.py index 3a9029f..aab70b0 100644 --- a/server/webserver.py +++ b/server/webserver.py @@ -165,9 +165,16 @@ class WebServer: response.status = 422 return json.dumps("Error - Frequency of " + str(spot.freq / 1000.0) + "kHz is not in a known band.", default=serialize_everything) + # Reject if grid formatting incorrect + if spot.dx_grid and not re.match(r"^([A-R]{2}[0-9]{2}[A-X]{2}[0-9]{2}[A-X]{2}|[A-R]{2}[0-9]{2}[A-X]{2}[0-9]{2}|[A-R]{2}[0-9]{2}[A-X]{2}|[A-R]{2}[0-9]{2})$", spot.dx_grid.upper()): + response.content_type = 'application/json' + response.status = 422 + return json.dumps("Error - '" + spot.dx_grid + "' does not look like a valid Maidenhead grid.", default=serialize_everything) + # infer missing data, and add it to our database. spot.source = "API" - spot.icon = "desktop" + if not spot.sig: + spot.icon = "desktop" spot.infer_missing() self.spots.add(spot.id, spot, expire=MAX_SPOT_AGE) diff --git a/views/webpage_add_spot.tpl b/views/webpage_add_spot.tpl index 8793409..2afd2ec 100644 --- a/views/webpage_add_spot.tpl +++ b/views/webpage_add_spot.tpl @@ -31,7 +31,11 @@
- + + +
+
+
diff --git a/webassets/js/add-spot.js b/webassets/js/add-spot.js index 5d0c57a..24c9840 100644 --- a/webassets/js/add-spot.js +++ b/webassets/js/add-spot.js @@ -8,6 +8,7 @@ function addSpot() { var dx = $("#dx-call").val().toUpperCase(); var freqStr = $("#freq").val(); var mode = $("#mode").val().toUpperCase(); + var dxGrid = $("#dx-grid").val(); var comment = $("#comment").val(); var de = $("#de-call").val().toUpperCase(); @@ -27,11 +28,17 @@ function addSpot() { if (mode != "") { spot["mode"] = mode; } + if (dxGrid != "") { + spot["dx_grid"] = dxGrid; + } if (comment != "") { spot["comment"] = comment; } if (de != "") { spot["de_call"] = de; + } else { + showAddSpotError("A spotter callsign is required in order to spot."); + return; } spot["time"] = moment.utc().valueOf() / 1000.0; @@ -42,6 +49,7 @@ function addSpot() { timeout: 10000, success: async function (result) { $("#result-good").html(""); + $("#result-bad").html(""); setTimeout(() => { $("#result-good").hide(); window.location.replace("/");