Refactor activity names to use an enum instead of a string to avoid typos #147

This commit is contained in:
Ian Renton
2026-09-18 18:09:41 +01:00
parent ab79e7e01c
commit e5caf7353d
61 changed files with 735 additions and 638 deletions
+3 -2
View File
@@ -9,6 +9,7 @@ import tornado_eventsource.handler
from tornado import httputil
from tornado.web import Application
from core.enums import ActivityName
from core.utils import safe_json_dumps
from data.lookup_credentials import extract_credentials
@@ -168,13 +169,13 @@ def alert_allowed_by_query(alert, query):
# the alert is a dxpedition, or contests_skip_max_duration_check and the alert is a contest, it also
# always passes the check.
if (
alert.sig == "DXpedition"
alert.sig == ActivityName.DXPEDITION
and "dxpeditions_skip_max_duration_check" in query
and query.get("dxpeditions_skip_max_duration_check").upper() == "TRUE"
):
continue
if (
alert.sig == "Contest"
alert.sig == ActivityName.CONTEST
and "contests_skip_max_duration_check" in query
and query.get("contests_skip_max_duration_check").upper() == "TRUE"
):
+2 -3
View File
@@ -7,9 +7,8 @@ from tornado import httputil
from tornado.web import Application
from core.activity_lookup_helper import populate_missing_activity_ref_info
from core.activity_utils import get_ref_regex_for_activity
from core.activity_utils import get_activity_by_name, get_ref_regex_for_activity
from core.call_lookup_helper import get_call_info
from core.constants import ACTIVITIES
from core.geo_utils import (
lat_lon_for_grid_sw_corner_plus_size,
lat_lon_to_cq_zone,
@@ -85,7 +84,7 @@ class APILookupActivityRefHandler(tornado.web.RequestHandler):
if "sig" in query_params and "id" in query_params:
activity = str(query_params.get("sig")).upper()
ref_id = str(query_params.get("id")).upper()
if activity in [a.name.upper() for a in ACTIVITIES]:
if get_activity_by_name(activity):
if not get_ref_regex_for_activity(activity) or re.match(
get_ref_regex_for_activity(activity), ref_id
):
+4 -3
View File
@@ -6,9 +6,10 @@ from tornado import httputil
from tornado.web import Application
from core.config import ALLOW_SPOTTING, MAX_SPOT_AGE
from core.constants import ACTIVITIES, BANDS, PROPAGATION_MODES
from core.constants import BANDS, PROPAGATION_MODES
from core.enums import Continent, Mode, ModeType
from core.utils import safe_json_dumps
from data.activities import ACTIVITIES
logger = logging.getLogger(__name__)
@@ -39,7 +40,7 @@ class APIOptionsHandler(tornado.web.RequestHandler):
# for provider in self._spot_providers:
# if not provider.enabled:
# continue
# for activity in ACTIVITIES:
# for activity in ACTIVITIES.values():
# if provider.can_submit_spot(activity.name):
# spot_submit_providers.setdefault(activity.name, []).append(provider.name)
@@ -74,7 +75,7 @@ class APIOptionsHandler(tornado.web.RequestHandler):
"bands": BANDS,
"modes": [m.value for m in Mode],
"mode_types": [t.value for t in ModeType],
"sigs": ACTIVITIES,
"sigs": list(ACTIVITIES.values()),
"spot_providers": spot_providers,
"spot_providers_enabled_by_default": spot_providers_enabled_by_default,
"alert_providers": alert_providers,