Skip to content

Commit b625635

Browse files
committed
Fixed dashboard signals parsing for dashboard queries
1 parent 27bf48d commit b625635

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/server/_limiter.py

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
from ._common import app, get_real_ip_addr
88
from ._config import RATE_LIMIT, RATELIMIT_STORAGE_URL, REDIS_HOST, REDIS_PASSWORD
99
from ._exceptions import ValidationFailedException
10-
from ._params import extract_dates, extract_integers, extract_strings
10+
from ._params import extract_dates, extract_integers, extract_strings, parse_source_signal_sets
1111
from ._security import _is_public_route, current_user, require_api_key, show_no_api_key_warning, resolve_auth_token, ERROR_MSG_RATE_LIMIT, ERROR_MSG_MULTIPLES
1212

1313

@@ -71,12 +71,13 @@ def get_multiples_count(request):
7171
def check_signals_allowlist(request):
7272
signals_allowlist = {":".join(ss_pair) for ss_pair in DashboardSignals().srcsig_list()}
7373
request_signals = []
74-
if "signal" in request.args.keys():
75-
request_signals += extract_strings("signal")
76-
if "signals" in request.args.keys():
77-
request_signals += extract_strings("signals")
78-
if "data_source" in request.args:
79-
request_signals = [f"{request.args['data_source']}:{request_signal}" for request_signal in request_signals]
74+
request_args = request.args.keys()
75+
if "signal" in request_args or "signals" in request_args:
76+
source_signal_sets = parse_source_signal_sets()
77+
for source_signal in source_signal_sets:
78+
if isinstance(source_signal.signal, list):
79+
for signal in source_signal.signal:
80+
request_signals.append(f"{source_signal.source}:{signal}")
8081
if len(request_signals) == 0:
8182
return False
8283
return all([signal in signals_allowlist for signal in request_signals])

0 commit comments

Comments
 (0)