From 75905c5ef7914bbefeb579530ca30bba21aea0fd Mon Sep 17 00:00:00 2001
From: Ian Renton
Date: Fri, 18 Sep 2026 17:29:21 +0100
Subject: [PATCH] Add /AM and /MM activities, fix up activities list in OpenAPI
spec, few more About page tweaks. #147
---
core/constants.py | 18 +++++++++++++++++-
data/spot.py | 7 +++++++
static/apidocs/openapi.yml | 8 ++++++++
templates/about.html | 5 ++---
4 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/core/constants.py b/core/constants.py
index 8d51f37..a66d916 100644
--- a/core/constants.py
+++ b/core/constants.py
@@ -39,11 +39,27 @@ ACTIVITIES = [
Activity(
name="EME",
comment_names=[],
- description="Moonbounce",
+ description="Earth-Moon-Earth (Moonbounce)",
sig_type=ActivityType.TRADITIONAL,
icon="fa-moon",
refs_globally_unique=False,
),
+ Activity(
+ name="/AM",
+ comment_names=[],
+ description="Aeronautical Mobile",
+ sig_type=ActivityType.TRADITIONAL,
+ icon="fa-plane",
+ refs_globally_unique=False,
+ ),
+ Activity(
+ name="/MM",
+ comment_names=[],
+ description="Maritime Mobile",
+ sig_type=ActivityType.TRADITIONAL,
+ icon="fa-sailboat",
+ refs_globally_unique=False,
+ ),
Activity(
name="QRP",
comment_names=["QRP"],
diff --git a/data/spot.py b/data/spot.py
index 78a52d3..f482afb 100644
--- a/data/spot.py
+++ b/data/spot.py
@@ -384,6 +384,13 @@ class Spot:
if self.propagation_mode == "Earth-Moon-Earth" and not self.sig:
self.sig = "EME"
+ # Set activities based on the DX callsign suffix
+ if self.dx_call and not self.sig:
+ if self.dx_call.upper().endswith("/AM"):
+ self.sig = "/AM"
+ elif self.dx_call.upper().endswith("/MM"):
+ self.sig = "/MM"
+
# Parse "de_grid -> dx_grid" structures from the comment
if self.comment:
grid_mode_grid_match = re.search(
diff --git a/static/apidocs/openapi.yml b/static/apidocs/openapi.yml
index b65f878..ffea99f 100644
--- a/static/apidocs/openapi.yml
+++ b/static/apidocs/openapi.yml
@@ -19,6 +19,7 @@ info:
* Renamed AMSAT SIG to "Satellite" as AMSAT is a specific organisation not just a general term for satellite QSOs
* Removed `alert_type` from alert data. Contest, DXpedition and Satellite alerts now give those values in `sig` instead, alongside the existing outdoor activity programmes. Teeeeechnically a breaking change but AlertType is so new I doubt anyone is using it yet, so slipped this one in anyway. Sorry :)
+ * Added QRP, RaDAR Rally, /AM and /MM activities
### 2.1
@@ -884,6 +885,13 @@ components:
ActivityName:
type: string
enum:
+ - Contest
+ - DXpedition
+ - Satellite
+ - EME
+ - /AM
+ - /MM
+ - QRP
- POTA
- SOTA
- WWFF
diff --git a/templates/about.html b/templates/about.html
index 06a6d06..6c24c8c 100644
--- a/templates/about.html
+++ b/templates/about.html
@@ -14,9 +14,8 @@
source, freeing developers from needing to know how each individual data source presents its data.
Spothole itself is also open source, Public Domain licenced code that anyone can take and modify. The source code is here.
- The software was written by Ian Renton, MØTRT and other contributors. Full
- details are available in the README
- file.
+ The software was written by Ian Renton, MØTRT with code contributions by
+ Steven, M1SDH. The full list of thanks due to others can be found at the bottom of this page.
This server is running Spothole version {{software_version}}.
Using Spothole
There are a number of different ways to use Spothole, depending on what you want to do with it and your level of