Skip to content

Commit ac6d1a3

Browse files
committed
Fixed geo filtering, removed unnecessary migration
1 parent 757c2da commit ac6d1a3

File tree

6 files changed

+43
-84
lines changed

6 files changed

+43
-84
lines changed

src/signal_sets/filters.py

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@
22

33
import django_filters
44
from django_filters.widgets import QueryArrayWidget
5+
from django.db.models import Q
56

67
from signals.models import (
78
Pathogen,
89
GeographicScope,
910
Geography,
1011
SeverityPyramidRung,
11-
SignalSourceDbView,
12+
Signal
1213
)
1314
from signal_sets.models import SignalSet
1415
from datasources.models import DataSource
@@ -104,16 +105,8 @@ def filter_by_geo(self, queryset, name, value):
104105
if not value:
105106
return queryset
106107
filtered_signals = get_list_of_signals_filtered_by_geo(value)
107-
sources = set()
108-
signals = []
109-
for source_signal in filtered_signals["epidata"]:
110-
sources.add(source_signal["source"])
111-
signals.append(source_signal["signal"])
112-
signal_set_ids = (
113-
SignalSourceDbView.objects.filter(source__in=sources)
114-
.filter(signal__in=signals)
115-
.exclude(signal_set=None)
116-
.values_list("signal_set", flat=True)
117-
.distinct()
118-
)
119-
return queryset.filter(id__in=signal_set_ids)
108+
query = Q()
109+
for item in filtered_signals["epidata"]:
110+
query |= Q(source__name=item["source"], name=item["signal"])
111+
signal_sets = Signal.objects.filter(query).values_list("signal_set_id", flat=True).distinct()
112+
return queryset.filter(id__in=signal_sets)

src/signal_sets/utils.py

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -23,28 +23,8 @@ def dict_to_geo_string(geo_dict):
2323

2424
def get_list_of_signals_filtered_by_geo(geos):
2525
geos = list_to_dict(ast.literal_eval(geos))
26-
# send request to epidata api here
27-
# temporary disabled
28-
# ------------------------------------------
29-
# url = f"{settings.COVIDCAST_URL}geo_coverage"
30-
url = "http://localhost:10080/epidata/covidcast/geo_coverage"
26+
url = f"{settings.COVIDCAST_URL}geo_coverage"
3127
params = {"geo": dict_to_geo_string(geos)}
3228
response = requests.get(url, params=params)
33-
# return response.json()
34-
# ------------------------------------------
35-
return {
36-
"epidata": [
37-
{"source": "fb-survey", "signal": "7dav_outpatient_covid"},
38-
{"source": "fluview_meta", "signal": "adult_icu_bed_covid_utilization"},
39-
{
40-
"source": "fluview_meta",
41-
"signal": "adult_icu_bed_covid_utilization_numerator",
42-
},
43-
{
44-
"source": "fluview_meta",
45-
"signal": "adult_icu_bed_utilization_denominator",
46-
},
47-
{"source": "nchs-mortality", "signal": "confirmed_7dav_incidence_prop"},
48-
{"source": "usa-facts", "signal": "confirmed_incidence_prop"},
49-
]
50-
}
29+
print(response.url)
30+
return response.json()

src/signal_sets/views.py

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -32,31 +32,41 @@ def get_queryset(self) -> QuerySet[Any]:
3232

3333
def get_url_params(self):
3434
url_params_dict = {
35-
"pathogens": [int(el) for el in self.request.GET.getlist("pathogens")],
35+
"pathogens": (
36+
[int(el) for el in self.request.GET.getlist("pathogens")]
37+
if self.request.GET.get("pathogens")
38+
else ""
39+
),
3640
"geographic_scope": (
3741
[el for el in self.request.GET.getlist("geographic_scope")]
3842
if self.request.GET.get("geographic_scope")
39-
else None
43+
else ""
4044
),
4145
"severity_pyramid_rungs": (
4246
[el for el in self.request.GET.getlist("severity_pyramid_rungs")]
4347
if self.request.GET.get("severity_pyramid_rungs")
44-
else None
48+
else ""
4549
),
4650
"data_source": [el for el in self.request.GET.getlist("data_source")],
47-
"temporal_granularity": [
48-
el for el in self.request.GET.getlist("temporal_granularity")
49-
],
51+
"temporal_granularity": (
52+
[el for el in self.request.GET.getlist("temporal_granularity")]
53+
if self.request.GET.get("temporal_granularity")
54+
else ""
55+
),
5056
"available_geographies": (
5157
[el for el in self.request.GET.getlist("available_geographies")]
5258
if self.request.GET.get("available_geographies")
53-
else None
59+
else ""
60+
),
61+
"temporal_scope_end": (
62+
self.request.GET.get("temporal_scope_end")
63+
if self.request.GET.get("temporal_scope_end")
64+
else ""
5465
),
55-
"temporal_scope_end": self.request.GET.get("temporal_scope_end"),
5666
"location_search": (
5767
[el for el in self.request.GET.getlist("location_search")]
5868
if self.request.GET.get("location_search")
59-
else None
69+
else ""
6070
),
6171
}
6272
url_params_str = ""
@@ -83,7 +93,7 @@ def get_related_signals(self):
8393
"endpoint": signal_set.endpoint,
8494
"source": signal.source.name,
8595
"time_type": signal.time_type,
86-
"description": signal.description
96+
"description": signal.description,
8797
}
8898
)
8999
return related_signals
@@ -103,7 +113,14 @@ def get_context_data(self, **kwargs: Any) -> dict[str, Any]:
103113
context["signal_sets"] = self.get_queryset()
104114
context["related_signals"] = json.dumps(self.get_related_signals())
105115
context["available_geographies"] = Geography.objects.filter(used_in="signals")
106-
context["geographic_granularities"] = [{"id": str(geo_unit.geo_id), "geoType": geo_unit.geography.name, "text": geo_unit.display_name} for geo_unit in GeographyUnit.objects.all()]
116+
context["geographic_granularities"] = [
117+
{
118+
"id": str(geo_unit.geo_id),
119+
"geoType": geo_unit.geography.name,
120+
"text": geo_unit.display_name,
121+
}
122+
for geo_unit in GeographyUnit.objects.all()
123+
]
107124
return context
108125

109126

src/signals/migrations/0017_signalsourcedbview.py

Lines changed: 0 additions & 26 deletions
This file was deleted.

src/signals/models.py

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -606,13 +606,3 @@ def get_available_geographies(self):
606606
def get_pathogens(self):
607607
return self.pathogens.split(",") if self.pathogens else []
608608

609-
610-
class SignalSourceDbView(models.Model):
611-
id = models.BigIntegerField(primary_key=True)
612-
signal = models.CharField(max_length=255)
613-
source = models.CharField(max_length=255)
614-
signal_set = models.BigIntegerField()
615-
616-
class Meta:
617-
managed = False
618-
db_table = "signals_signal_source_view"

src/templates/signal_sets/signal_sets.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,8 @@ <h5 class="modal-title" id="selectedSignalsModalLabel">Selected signals</h5>
470470

471471
var relatedSignals = JSON.parse(JSON.stringify({{ related_signals|safe }}));
472472

473+
var urlParams = JSON.parse(JSON.stringify({{ url_params_dict|safe }}));
474+
473475
$(document).ready(function () {
474476

475477
const locationSearchValues = geoValues.map(item => {
@@ -479,6 +481,9 @@ <h5 class="modal-title" id="selectedSignalsModalLabel">Selected signals</h5>
479481
}
480482
})
481483
initSelect2('location_search', locationSearchValues);
484+
if (urlParams.location_search != "") {
485+
$("#location_search").val(urlParams.location_search).trigger("change");
486+
}
482487
table.columns.adjust()
483488
})
484489

0 commit comments

Comments
 (0)