Starting to implement alerts #17

This commit is contained in:
Ian Renton
2025-10-04 18:09:54 +01:00
parent 55893949b8
commit 74153a9d94
29 changed files with 552 additions and 109 deletions

View File

@@ -1,5 +1,4 @@
import json
import uuid
from dataclasses import dataclass
from datetime import datetime
@@ -16,8 +15,8 @@ from core.utils import infer_mode_type_from_mode, infer_band_from_freq, infer_co
# Data class that defines a spot.
@dataclass
class Spot:
# Globally unique identifier for the spot
guid: str = None
# Unique identifier for the spot
id: int = None
# Callsign of the operator that has been spotted
dx_call: str = None
# Callsign of the operator that has spotted them
@@ -97,9 +96,6 @@ class Spot:
# Infer missing parameters where possible
def infer_missing(self):
# Always create a GUID
self.guid = str(uuid.uuid4())
# If we somehow don't have a spot time, set it to zero so it sorts off the bottom of any list but
# clients can still reliably parse it as a number.
if not self.time:
@@ -211,6 +207,9 @@ class Spot:
# is likely at home.
self.location_good = self.location_source == "SPOT" or (self.location_source == "QRZ" and not "/" in self.dx_call)
# Always create an ID based on a hashcode
self.id = hash(str(self))
# JSON serialise
def to_json(self):
return json.dumps(self, default=lambda o: o.__dict__, sort_keys=True)