diff --git a/server/handlers/api/addspot.py b/server/handlers/api/addspot.py index f939607..79ec8d5 100644 --- a/server/handlers/api/addspot.py +++ b/server/handlers/api/addspot.py @@ -180,9 +180,40 @@ class APISpotHandler(tornado.web.RequestHandler): self.set_header("Content-Type", "application/json") return + # Validate upstream submission requirements + if submit_upstream and upstream_provider_name: + if not spot.sig: + self.set_status(422) + self.write(json.dumps("Error - a SIG must be selected to submit upstream.", + default=serialize_everything)) + self.set_header("Cache-Control", "no-store") + self.set_header("Content-Type", "application/json") + return + if not spot.sig_refs and upstream_provider_name != "Tiles": + self.set_status(422) + self.write(json.dumps("Error - a SIG reference is required to submit upstream.", + default=serialize_everything)) + self.set_header("Cache-Control", "no-store") + self.set_header("Content-Type", "application/json") + return + if not spot.dx_grid and upstream_provider_name == "Tiles": + self.set_status(422) + self.write(json.dumps("Error - a grid reference is required to submit upstream to Tiles on the Air.", + default=serialize_everything)) + self.set_header("Cache-Control", "no-store") + self.set_header("Content-Type", "application/json") + return + if not spot.mode and upstream_provider_name == "Tiles": + self.set_status(422) + self.write(json.dumps("Error - a mode is required to submit upstream to Tiles on the Air.", + default=serialize_everything)) + self.set_header("Cache-Control", "no-store") + self.set_header("Content-Type", "application/json") + return + # Submit upstream if requested upstream_warning = None - if submit_upstream and upstream_provider_name and spot.sig: + if submit_upstream and upstream_provider_name: provider = self._find_provider(upstream_provider_name, spot.sig) if provider: try: diff --git a/templates/add_spot.html b/templates/add_spot.html index 80b1c80..9d2f007 100644 --- a/templates/add_spot.html +++ b/templates/add_spot.html @@ -24,14 +24,14 @@