Skip to content

Commit 7df3472

Browse files
authored
Merge pull request #5 from cmu-delphi/development
Development
2 parents 8786cba + 51a5519 commit 7df3472

File tree

5 files changed

+37
-27
lines changed

5 files changed

+37
-27
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Generated by Django 5.0.7 on 2025-05-05 16:22
2+
3+
import django.db.models.deletion
4+
from django.db import migrations, models
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('indicators', '0003_alter_indicator_geographic_scope_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.AlterField(
15+
model_name='indicator',
16+
name='base',
17+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='base_for', to='indicators.indicator', verbose_name='Base Indicator'),
18+
),
19+
]

src/indicators/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ class Indicator(models.Model):
367367
"indicators.Indicator",
368368
verbose_name="Base Indicator",
369369
related_name="base_for",
370-
on_delete=models.PROTECT,
370+
on_delete=models.CASCADE,
371371
null=True,
372372
blank=True,
373373
)

src/indicatorsets/filters.py

+5-13
Original file line numberDiff line numberDiff line change
@@ -7,24 +7,16 @@
77

88

99
from indicatorsets.models import IndicatorSet
10-
from indicatorsets.utils import get_list_of_indicators_filtered_by_geo
10+
from indicatorsets.utils import (
11+
get_list_of_indicators_filtered_by_geo,
12+
get_original_data_provider_choices,
13+
)
1114
from indicators.models import Indicator
1215
from base.models import Pathogen, GeographicScope, Geography, SeverityPyramidRung
1316

1417

1518
logger = logging.getLogger(__name__)
1619

17-
try:
18-
ORIGINAL_DATA_PROVIDER_CHOICES = [
19-
(el, el)
20-
for el in set(
21-
IndicatorSet.objects.values_list("original_data_provider", flat=True)
22-
)
23-
]
24-
except Exception as e:
25-
ORIGINAL_DATA_PROVIDER_CHOICES = [("", "No original data provider available")]
26-
print(f"Error fetching original data provider choices: {e}")
27-
2820

2921
class IndicatorSetFilter(django_filters.FilterSet):
3022

@@ -60,7 +52,7 @@ class IndicatorSetFilter(django_filters.FilterSet):
6052

6153
original_data_provider = django_filters.MultipleChoiceFilter(
6254
field_name="original_data_provider",
63-
choices=ORIGINAL_DATA_PROVIDER_CHOICES,
55+
choices=get_original_data_provider_choices,
6456
widget=QueryArrayWidget,
6557
lookup_expr="exact",
6658
required=False,

src/indicatorsets/forms.py

+2-13
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,7 @@
22

33
from base.models import Pathogen, GeographicScope, Geography, SeverityPyramidRung
44
from indicatorsets.models import IndicatorSet
5-
6-
7-
try:
8-
ORIGINAL_DATA_PROVIDER_CHOICES = [
9-
(el, el)
10-
for el in set(
11-
IndicatorSet.objects.values_list("original_data_provider", flat=True)
12-
)
13-
]
14-
except Exception as e:
15-
ORIGINAL_DATA_PROVIDER_CHOICES = [("", "No original data provider available")]
16-
print(f"Error fetching original data provider choices: {e}")
5+
from indicatorsets.utils import get_original_data_provider_choices
176

187

198
class IndicatorSetFilterForm(forms.ModelForm):
@@ -44,7 +33,7 @@ class IndicatorSetFilterForm(forms.ModelForm):
4433
)
4534

4635
original_data_provider = forms.ChoiceField(
47-
choices=ORIGINAL_DATA_PROVIDER_CHOICES,
36+
choices=get_original_data_provider_choices,
4837
widget=forms.CheckboxSelectMultiple(),
4938
)
5039

src/indicatorsets/utils.py

+10
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import requests
66
from django.conf import settings
77
from epiweeks import Week
8+
from indicatorsets.models import IndicatorSet
89

910

1011
def list_to_dict(lst):
@@ -53,3 +54,12 @@ def get_epiweek(start_date, end_date):
5354
end_date = Week.fromdate(end_date)
5455
end_date = f"{end_date.year}{end_date.week if end_date.week >= 10 else '0' + str(end_date.week)}"
5556
return [start_date, end_date]
57+
58+
59+
def get_original_data_provider_choices():
60+
return [
61+
(el, el)
62+
for el in IndicatorSet.objects.values_list("original_data_provider", flat=True)
63+
.order_by("original_data_provider")
64+
.distinct()
65+
]

0 commit comments

Comments
 (0)