Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions src/alternative_interface/helper.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,16 @@
"state:WI": "WI",
"state:WV": "WV",
"state:WY": "WY",
# fluview (ILINET) specific locations
"ny_minus_jfk:ny_minus_jfk": "NY (minus NYC)",
"us-territory:as": "American Samoa",
"us-territory:mp": "Mariana Islands",
"us-territory:gu": "Guam",
"us-territory:pr": "Puerto Rico",
"us-territory:vi": "Virgin Islands",
"us-city:ord": "Chicago",
"us-city:lax": "Los Angeles",
"us-city:jfk": "New York City",
}

EXPRESS_VIEW_LABELS_MAPPING = {
Expand Down
27 changes: 19 additions & 8 deletions src/indicatorsets/filters.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import logging
import ast


import django_filters
Expand All @@ -13,6 +14,7 @@
)
from indicators.models import Indicator
from base.models import Pathogen, Geography, SeverityPyramidRung
from alternative_interface.helper import COVIDCAST_FLUVIEW_LOCATIONS_MAPPING


logger = logging.getLogger(__name__)
Expand Down Expand Up @@ -123,18 +125,27 @@ def hosted_by_delphi_filter(self, queryset, name, value):

return queryset

@staticmethod
def include_fluview(values):
include_fluview = False
for value in ast.literal_eval(values):
if COVIDCAST_FLUVIEW_LOCATIONS_MAPPING.get(value):
include_fluview = True
break
return include_fluview

def location_search_filter(self, queryset, name, value):
if not value:
return queryset
indicator_sets = []
filtered_indicators = get_list_of_indicators_filtered_by_geo(value)
include_fluview = self.include_fluview(value)
query = Q()
if filtered_indicators["epidata"]:
query = Q()
for item in filtered_indicators["epidata"]:
query |= Q(source__name=item["source"], name=item["signal"])
self.indicators_qs = self.indicators_qs.filter(query)
indicator_sets = self.indicators_qs.values_list(
"indicator_set_id", flat=True
).distinct()
return queryset.filter(id__in=indicator_sets)
else:
return IndicatorSet.objects.none()
if include_fluview:
query |= Q(indicator_set__epidata_endpoint="fluview")
self.indicators_qs = self.indicators_qs.filter(query)
indicator_sets = list(self.indicators_qs.values_list("indicator_set_id", flat=True).order_by("indicator_set_id").distinct())
return queryset.filter(id__in=indicator_sets)
Loading