Skip to content

Commit

Permalink
Update filter non private sites/devices implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
NicholasTurner23 committed Jan 28, 2025
1 parent 46c5d22 commit be197c9
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 43 deletions.
58 changes: 28 additions & 30 deletions src/analytics/api/views/dashboard.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,7 @@
SiteModel,
ExceedanceModel,
)
from api.utils.data_formatters import (
filter_non_private_sites,
filter_non_private_devices,
)
from api.utils.data_formatters import filter_non_private_sites_devices

# Middlewares
from api.utils.http import AirQoRequests
Expand Down Expand Up @@ -45,12 +42,12 @@ class ChartDataResource(Resource):
"chartType|required:str",
)
def post(self):
tenant = request.args.get("tenant", "airqo")
network = request.args.get("network", "airqo")

json_data = request.get_json()
sites = filter_non_private_sites(sites=json_data.get("sites", {})).get(
"sites", []
)
sites = filter_non_private_sites_devices(
filter_type="sites", filter_value=json_data.get("sites", {})
).get("data", [])
start_date = json_data["startDate"]
end_date = json_data["endDate"]
frequency = json_data["frequency"]
Expand All @@ -59,11 +56,10 @@ def post(self):

colors = ["#7F7F7F", "#E377C2", "#17BECF", "#BCBD22", "#3f51b5"]

events_model = EventsModel(tenant)
events_model = EventsModel(network)
data = events_model.get_chart_events(
sites, start_date, end_date, pollutant, frequency
)

chart_datasets = []
chart_labels = []

Expand Down Expand Up @@ -189,17 +185,18 @@ def _get_validated_filter(self, json_data):
filter_value = json_data.get(filter_type)

if filter_type in sites:
validated_value = filter_non_private_sites(filter_type, filter_value)
validated_value = filter_non_private_sites_devices(
filter_type, filter_value
)
elif filter_type in devices:
validated_value = filter_non_private_devices(filter_type, filter_value)
validated_value = filter_non_private_sites_devices(
filter_type, filter_value
)
else:
return filter_type, filter_value, None

if validated_value and validated_value.get("status") == "success":
# TODO This should be cleaned up.
validated_data = validated_value.get("data", {}).get(
"sites" if filter_type in sites else "devices", []
)
validated_data = validated_value.get("data", [])
else:
error_message = validated_value.get("message", "Validation failed")

Expand Down Expand Up @@ -274,9 +271,9 @@ def post(self):
pollutant = json_data["pollutant"]
start_date = json_data["startDate"]
end_date = json_data["endDate"]
sites = filter_non_private_sites(sites=json_data.get("sites", {})).get(
"sites", []
)
sites = filter_non_private_sites_devices(
filter_type="sites", filter_value=json_data.get("sites", {})
).get("data", [])

events_model = EventsModel(tenant)
site_model = SiteModel(tenant)
Expand Down Expand Up @@ -333,15 +330,16 @@ class DailyAveragesResource2(Resource):
"devices|optional:list",
)
def post(self):
tenant = request.args.get("tenant", "airqo")
network = request.args.get("network", "airqo")
json_data = request.get_json()
pollutant = json_data["pollutant"]
start_date = json_data["startDate"]
end_date = json_data["endDate"]
devices = filter_non_private_devices(devices=json_data.get("devices", {})).get(
"devices", []
)
events_model = EventsModel(tenant)
devices = filter_non_private_sites_devices(
filter_type="devices", filter_value=json_data.get("devices", {})
).get("data", [])

events_model = EventsModel(network)
data = events_model.get_device_averages_from_bigquery(
start_date, end_date, pollutant, devices=devices
)
Expand Down Expand Up @@ -391,9 +389,9 @@ def post(self):
standard = json_data["standard"]
start_date = json_data["startDate"]
end_date = json_data["endDate"]
sites = filter_non_private_sites(sites=json_data.get("sites", {})).get(
"sites", []
)
sites = filter_non_private_sites_devices(
filter_type="sites", filter_value=json_data.get("sites", {})
).get("data", [])

exc_model = ExceedanceModel(tenant)
data = exc_model.get_exceedances(
Expand Down Expand Up @@ -427,9 +425,9 @@ def post(self):
standard = json_data["standard"]
start_date = json_data["startDate"]
end_date = json_data["endDate"]
devices = filter_non_private_devices(devices=json_data.get("devices", {})).get(
"devices", []
)
devices = filter_non_private_sites_devices(
filter_type="devices", filter_value=json_data.get("devices", {})
).get("data", [])

events_model = EventsModel(tenant)
data = events_model.get_device_readings_from_bigquery(
Expand Down
27 changes: 14 additions & 13 deletions src/analytics/api/views/data.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,7 @@
Frequency,
)
from api.utils.data_formatters import (
filter_non_private_sites,
filter_non_private_devices,
filter_non_private_sites_devices,
)

# Middlewares
Expand Down Expand Up @@ -242,17 +241,19 @@ def _get_validated_filter(self, json_data):
filter_value = json_data.get(filter_type)

if filter_type in sites:
validated_value = filter_non_private_sites(filter_type, filter_value)
validated_value = filter_non_private_sites_devices(
filter_type, filter_value
)
elif filter_type in devices:
validated_value = filter_non_private_devices(filter_type, filter_value)
validated_value = filter_non_private_sites_devices(
filter_type, filter_value
)
else:
return filter_type, filter_value, None

if validated_value and validated_value.get("status") == "success":
# TODO This should be cleaned up.
validated_data = validated_value.get("data", {}).get(
"sites" if filter_type in sites else "devices", []
)
validated_data = validated_value.get("data", [])
else:
error_message = validated_value.get(
"message", "Data filter validation failed"
Expand Down Expand Up @@ -309,12 +310,12 @@ def post(self):
start_date = json_data["startDateTime"]
end_date = json_data["endDateTime"]
meta_data = json_data.get("meta_data", [])
sites = filter_non_private_sites(sites=json_data.get("sites", {})).get(
"sites", None
)
devices = filter_non_private_devices(devices=json_data.get("devices", {})).get(
"devices", None
)
sites = filter_non_private_sites_devices(
filter_type="sites", filter_value=json_data.get("sites", {})
).get("data", [])
devices = filter_non_private_sites_devices(
filter_type="devices", filter_value=json_data.get("devices", {})
).get("data", [])
airqlouds = json_data.get("airqlouds", [])
pollutants = json_data.get("pollutants", valid_pollutants)
user_id = json_data.get("userId")
Expand Down

0 comments on commit be197c9

Please sign in to comment.