mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2025-12-15 16:43:38 +00:00
Add a special 'NO_SIG' option to 'sig' query params, which will allow us to filter out all xOTA spots/alerts, leaving just the generic ones. #84
This commit is contained in:
@@ -338,11 +338,14 @@ class WebServer:
|
|||||||
sources = query.get(k).split(",")
|
sources = query.get(k).split(",")
|
||||||
spots = [s for s in spots if s.source and s.source in sources]
|
spots = [s for s in spots if s.source and s.source in sources]
|
||||||
case "sig":
|
case "sig":
|
||||||
# If a list of sigs is provided, the spot must have a sig and it must match one of them
|
# If a list of sigs is provided, the spot must have a sig and it must match one of them.
|
||||||
|
# The special "sig" "NO_SIG", when supplied in the list, mathches spots with no sig.
|
||||||
sigs = query.get(k).split(",")
|
sigs = query.get(k).split(",")
|
||||||
spots = [s for s in spots if s.sig and s.sig in sigs]
|
include_no_sig = "NO_SIG" in sigs
|
||||||
|
spots = [s for s in spots if (s.sig and s.sig in sigs) or (include_no_sig and not s.sig)]
|
||||||
case "needs_sig":
|
case "needs_sig":
|
||||||
# If true, a sig is required, regardless of what it is, it just can't be missing.
|
# If true, a sig is required, regardless of what it is, it just can't be missing. Mutually
|
||||||
|
# exclusive with supplying the special "NO_SIG" parameter to the "sig" query param.
|
||||||
needs_sig = query.get(k).upper() == "TRUE"
|
needs_sig = query.get(k).upper() == "TRUE"
|
||||||
if needs_sig:
|
if needs_sig:
|
||||||
spots = [s for s in spots if s.sig]
|
spots = [s for s in spots if s.sig]
|
||||||
@@ -441,8 +444,11 @@ class WebServer:
|
|||||||
sources = query.get(k).split(",")
|
sources = query.get(k).split(",")
|
||||||
alerts = [a for a in alerts if a.source and a.source in sources]
|
alerts = [a for a in alerts if a.source and a.source in sources]
|
||||||
case "sig":
|
case "sig":
|
||||||
|
# If a list of sigs is provided, the alert must have a sig and it must match one of them.
|
||||||
|
# The special "sig" "NO_SIG", when supplied in the list, mathches alerts with no sig.
|
||||||
sigs = query.get(k).split(",")
|
sigs = query.get(k).split(",")
|
||||||
alerts = [a for a in alerts if a.sig and a.sig in sigs]
|
include_no_sig = "NO_SIG" in sigs
|
||||||
|
spots = [a for a in alerts if (a.sig and a.sig in sigs) or (include_no_sig and not a.sig)]
|
||||||
case "dx_continent":
|
case "dx_continent":
|
||||||
dxconts = query.get(k).split(",")
|
dxconts = query.get(k).split(",")
|
||||||
alerts = [a for a in alerts if a.dx_continent and a.dx_continent in dxconts]
|
alerts = [a for a in alerts if a.dx_continent and a.dx_continent in dxconts]
|
||||||
|
|||||||
@@ -58,13 +58,13 @@ paths:
|
|||||||
$ref: "#/components/schemas/Source"
|
$ref: "#/components/schemas/Source"
|
||||||
- name: sig
|
- name: sig
|
||||||
in: query
|
in: query
|
||||||
description: "Limit the spots to only ones from one or more Special Interest Groups provided as an argument. To select more than one SIG, supply a comma-separated list."
|
description: "Limit the spots to only ones from one or more Special Interest Groups provided as an argument. To select more than one SIG, supply a comma-separated list. The special `sig` name `NO_SIG` matches spots with no sig set. You can use `sig=NO_SIG` to specifically only return generic spots with no associated SIG. You can also use combinations to request for example POTA + no SIG, but reject other SIGs. If you want to request 'every SIG and not No SIG', see the `needs_sig` query parameter for a shortcut."
|
||||||
required: false
|
required: false
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/SIGName"
|
$ref: "#/components/schemas/SIGNameIncludingNoSIG"
|
||||||
- name: needs_sig
|
- name: needs_sig
|
||||||
in: query
|
in: query
|
||||||
description: "Limit the spots to only ones with a Special Interest Group such as POTA. Because supplying all known SIGs as a `sigs` parameter is unwieldy, and leaving `sigs` blank will also return spots with *no* SIG, this parameter can be set true to return only spots with a SIG, regardless of what it is, so long as it's not blank. This is what Field Spotter uses to exclude generic cluster spots and only retrieve xOTA things."
|
description: "Limit the spots to only ones with a Special Interest Group such as POTA. Because supplying all known SIGs as a `sigs` parameter is unwieldy, and leaving `sigs` blank will also return spots with *no* SIG, this parameter can be set true to return only spots with a SIG, regardless of what it is, so long as it's not blank. This is the equivalent of supplying the `sig` query param with a list of every known SIG apart from the special `NO_SIG` value. This is what Field Spotter uses to exclude generic cluster spots and only retrieve xOTA things."
|
||||||
required: false
|
required: false
|
||||||
schema:
|
schema:
|
||||||
type: boolean
|
type: boolean
|
||||||
@@ -190,10 +190,10 @@ paths:
|
|||||||
$ref: "#/components/schemas/Source"
|
$ref: "#/components/schemas/Source"
|
||||||
- name: sig
|
- name: sig
|
||||||
in: query
|
in: query
|
||||||
description: "Limit the alerts to only ones from one or more Special Interest Groups. To select more than one SIG, supply a comma-separated list."
|
description: "Limit the alerts to only ones from one or more Special Interest Groups. To select more than one SIG, supply a comma-separated list. The special value 'NO_SIG' can be included to return alerts specifically without an associated SIG (i.e. general DXpeditions)."
|
||||||
required: false
|
required: false
|
||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/SIGName"
|
$ref: "#/components/schemas/SIGNameIncludingNoSIG"
|
||||||
- name: dx_continent
|
- name: dx_continent
|
||||||
in: query
|
in: query
|
||||||
description: "Limit the alerts to only ones where the DX operator is on the given continent(s). To select more than one continent, supply a comma-separated list."
|
description: "Limit the alerts to only ones where the DX operator is on the given continent(s). To select more than one continent, supply a comma-separated list."
|
||||||
@@ -591,6 +591,31 @@ components:
|
|||||||
- TOTA
|
- TOTA
|
||||||
example: POTA
|
example: POTA
|
||||||
|
|
||||||
|
SIGNameIncludingNoSIG:
|
||||||
|
type: string
|
||||||
|
enum:
|
||||||
|
- POTA
|
||||||
|
- SOTA
|
||||||
|
- WWFF
|
||||||
|
- WWBOTA
|
||||||
|
- GMA
|
||||||
|
- HEMA
|
||||||
|
- WCA
|
||||||
|
- MOTA
|
||||||
|
- SIOTA
|
||||||
|
- ARLHS
|
||||||
|
- ILLW
|
||||||
|
- ZLOTA
|
||||||
|
- KRMNPA
|
||||||
|
- IOTA
|
||||||
|
- WOTA
|
||||||
|
- BOTA
|
||||||
|
- WAB
|
||||||
|
- WAI
|
||||||
|
- TOTA
|
||||||
|
- NO_SIG
|
||||||
|
example: POTA
|
||||||
|
|
||||||
Continent:
|
Continent:
|
||||||
type: string
|
type: string
|
||||||
enum:
|
enum:
|
||||||
|
|||||||
Reference in New Issue
Block a user