Skip to content

Commit ef1f88d

Browse files
committed
OKRS24-235 Fixed typo in Signal model field name. Fixed issue with import few fields. Added signal filters tooltips fixture.
1 parent 708b224 commit ef1f88d

9 files changed

+79
-28
lines changed

src/fixtures/signal_filters_fields.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@
4949
"pk": 6,
5050
"fields": {
5151
"filter": 1,
52-
"filter_field": "severenity_pyramid_rungs",
52+
"filter_field": "severity_pyramid_rungs",
5353
"description": null
5454
}
5555
},

src/signals/filters.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ class SignalFilter(django_filters.FilterSet):
4747
)
4848
)
4949
format_type = django_filters.MultipleChoiceFilter(choices=FormatChoices.choices)
50-
severenity_pyramid_rungs = django_filters.MultipleChoiceFilter(choices=SeverityPyramidRungsChoices.choices)
50+
severity_pyramid_rungs = django_filters.MultipleChoiceFilter(choices=SeverityPyramidRungsChoices.choices)
5151
source = django_filters.ModelMultipleChoiceFilter(queryset=SourceSubdivision.objects.all(),
5252
field_name="source_id__external_name",
5353
to_field_name='external_name')
@@ -72,7 +72,7 @@ class Meta:
7272
'pathogen',
7373
'active',
7474
'available_geography',
75-
'severenity_pyramid_rungs',
75+
'severity_pyramid_rungs',
7676
'category',
7777
'geographic_scope',
7878
'source',

src/signals/forms.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class SignalFilterForm(forms.ModelForm):
3434
)
3535
time_type = forms.ChoiceField(choices=TimeTypeChoices.choices, widget=forms.CheckboxSelectMultiple())
3636
geographic_scope = forms.ModelMultipleChoiceField(queryset=GeographicScope.objects.all(), widget=forms.CheckboxSelectMultiple())
37-
severenity_pyramid_rungs = forms.ChoiceField(choices=SeverityPyramidRungsChoices.choices, widget=forms.CheckboxSelectMultiple())
37+
severity_pyramid_rungs = forms.ChoiceField(choices=SeverityPyramidRungsChoices.choices, widget=forms.CheckboxSelectMultiple())
3838

3939
from_date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), required=False)
4040
to_date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), required=False)
@@ -49,7 +49,7 @@ class Meta:
4949
'pathogen',
5050
'active',
5151
'available_geography',
52-
'severenity_pyramid_rungs',
52+
'severity_pyramid_rungs',
5353
'source',
5454
'time_type',
5555
'geographic_scope',
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Generated by Django 5.0.6 on 2024-07-11 11:46
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
('signals', '0020_signal_signal_availability_days'),
10+
]
11+
12+
operations = [
13+
migrations.RenameField(
14+
model_name='signal',
15+
old_name='severenity_pyramid_rungs',
16+
new_name='severity_pyramid_rungs',
17+
),
18+
migrations.AlterField(
19+
model_name='signal',
20+
name='age_breakdown',
21+
field=models.CharField(blank=True, choices=[('0-17', '0-17'), ('18-64', '18-64'), ('65+', '65+')], help_text='Age Breakdown', max_length=128, null=True),
22+
),
23+
migrations.AlterField(
24+
model_name='signal',
25+
name='organisations_access_list',
26+
field=models.ManyToManyField(blank=True, help_text='Organisations Access List. Who may access this signal?', related_name='accessed_signals', to='signals.organisation'),
27+
),
28+
migrations.AlterField(
29+
model_name='signal',
30+
name='organisations_sharing_list',
31+
field=models.ManyToManyField(blank=True, help_text='Organisations Sharing List. Who may be told about this signal?', related_name='shared_signals', to='signals.organisation'),
32+
),
33+
migrations.AlterField(
34+
model_name='signal',
35+
name='time_label',
36+
field=models.CharField(choices=[('day', 'Day'), ('date', 'Date'), ('dseek', 'Week')], help_text='Time label', max_length=128),
37+
),
38+
]

src/signals/models.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from typing import Any
12
from django.core.exceptions import ValidationError
23
from django.db import models
34
from django.utils.translation import gettext_lazy as _
@@ -26,7 +27,7 @@ class TimeLabelChoices(models.TextChoices):
2627
"""
2728
DAY = 'day', _('Day')
2829
DATE = 'date', _('Date')
29-
WEEK = 'week', _('Week')
30+
WEEK = 'dseek', _('Week')
3031

3132

3233
class FormatChoices(models.TextChoices):
@@ -63,8 +64,8 @@ class SeverityPyramidRungsChoices(models.TextChoices):
6364
POPULATION = 'population', _('Population')
6465
INFECTED = 'infected', _('Infected')
6566
SYMPTOMATIC = 'symptomatic', _('Symptomatic')
66-
OUTPATIENT_VISIT = 'outpatient_visit', _('Outpatient / ED')
67-
ASCERTAINED = 'ascertained', _('Ascertained (case)')
67+
OUTPATIENT_VISIT = 'outpatient visit', _('Outpatient / ED')
68+
ASCERTAINED = 'ascertained (case)', _('Ascertained (case)')
6869
HOSPITALIZED = 'hospitalized', _('Hospitalized')
6970
ICU = 'icu', _('ICU')
7071
DEAD = 'dead', _('Dead')
@@ -372,7 +373,7 @@ class Signal(TimeStampedModel):
372373
help_text=_('Demographic Scope'),
373374
related_name='signals',
374375
)
375-
severenity_pyramid_rungs: models.CharField = models.CharField(
376+
severity_pyramid_rungs: models.CharField = models.CharField(
376377
help_text=_('Severity Pyramid Rungs'),
377378
max_length=128,
378379
choices=SeverityPyramidRungsChoices.choices,
@@ -434,6 +435,7 @@ class Signal(TimeStampedModel):
434435
max_length=128,
435436
choices=AgeBreakdownChoices.choices,
436437
null=True,
438+
blank=True
437439
)
438440
is_smoothed: models.BooleanField = models.BooleanField(
439441
help_text=_('Is Smoothed'),
@@ -479,13 +481,15 @@ class Signal(TimeStampedModel):
479481
organisations_access_list: models.ManyToManyField = models.ManyToManyField(
480482
'signals.Organisation',
481483
help_text=_('Organisations Access List. Who may access this signal?'),
482-
related_name='accessed_signals'
484+
related_name='accessed_signals',
485+
blank=True
483486
)
484487

485488
organisations_sharing_list: models.ManyToManyField = models.ManyToManyField(
486489
'signals.Organisation',
487490
help_text=_('Organisations Sharing List. Who may be told about this signal?'),
488-
related_name='shared_signals'
491+
related_name='shared_signals',
492+
blank=True
489493
)
490494

491495
license: models.ForeignKey = models.ForeignKey(

src/signals/resources.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ class SignalResource(resources.ModelResource):
8787
column_name='Demographic Scope',
8888
widget=widgets.ManyToManyWidget(DemographicScope, field='name', separator=','),
8989
)
90-
severenity_pyramid_rungs = Field(attribute='severenity_pyramid_rungs', column_name='Severity Pyramid Rungs')
90+
severity_pyramid_rungs = Field(attribute='severity_pyramid_rungs', column_name='Severity Pyramid Rungs')
9191
category = Field(
9292
attribute='category',
9393
column_name='Category',
@@ -169,7 +169,7 @@ class Meta:
169169
'time_label',
170170
'reporting_cadence',
171171
'demographic_scope',
172-
'severenity_pyramid_rungs',
172+
'severity_pyramid_rungs',
173173
'available_geography',
174174
'is_smoothed',
175175
'is_weighted',
@@ -188,6 +188,7 @@ class Meta:
188188
'license',
189189
'restrictions',
190190
'typical_revision_cadence',
191+
'category',
191192
# 'gender_breakdown',
192193
# 'race_breakdown',
193194
# 'age_breakdown',
@@ -213,6 +214,8 @@ def before_import_row(self, row, **kwargs) -> None:
213214
self.process_links(row)
214215
self.process_pathogen(row)
215216
self.process_license(row)
217+
self.process_severity_pyramid_rungs(row)
218+
self.process_time_label(row)
216219
self.process_signal_category(row)
217220
self.process_signal_type(row)
218221
self.process_geographic_scope(row)
@@ -238,6 +241,10 @@ def fix_boolean_fields(self, row, fields: list) -> Any:
238241
row[k] = False
239242
return row
240243

244+
def process_time_label(self, row) -> Any:
245+
if row['Time Label']:
246+
row['Time Label'] = row['Time Label'].lower()
247+
241248
def process_links(self, row) -> Any:
242249
"""
243250
Processes links.
@@ -289,14 +296,16 @@ def process_demographic_scope(self, row) -> None:
289296
for demographic_scope in demographic_scopes:
290297
DemographicScope.objects.get_or_create(name=demographic_scope.strip())
291298

292-
def process_severenity_pyramid_rungs(self, row) -> None:
299+
def process_severity_pyramid_rungs(self, row) -> None:
293300
"""
294301
Processes severenity pyramid rungs.
295302
"""
296303

297304
if row['Severity Pyramid Rungs']:
298305
if row['Severity Pyramid Rungs'].startswith('None'):
299306
row['Severity Pyramid Rungs'] = None
307+
else:
308+
row['Severity Pyramid Rungs'] = row['Severity Pyramid Rungs'].lower()
300309

301310
def process_organisations_access_list(self, row):
302311
"""
@@ -357,7 +366,7 @@ def process_geographic_scope(self, row):
357366
def after_import_row(self, row, row_result, **kwargs) -> None:
358367
"""
359368
Post-processes each row after importing.
360-
"""
369+
"""
361370
geographies: str = row['Available Geography'].split(',')
362371
delphi_aggregated_geographies: str = row['Delphi-Aggregated Geography'].split(',')
363372
for geography in geographies:

src/signals/views.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,8 @@ def get_url_params(self):
5050
]
5151
if self.request.GET.get("available_geography")
5252
else None,
53-
"severenity_pyramid_rungs": [el for el in self.request.GET.getlist("severenity_pyramid_rungs")]
54-
if self.request.GET.get("severenity_pyramid_rungs")
53+
"severity_pyramid_rungs": [el for el in self.request.GET.getlist("severity_pyramid_rungs")]
54+
if self.request.GET.get("severity_pyramid_rungs")
5555
else None,
5656
"geographic_scope": [el for el in self.request.GET.getlist("geographic_scope")]
5757
if self.request.GET.get("geographic_scope")
@@ -144,7 +144,7 @@ class SignalsListApiView(ListAPIView):
144144
"display_name",
145145
"pathogen__name",
146146
"available_geography__name",
147-
"severenity_pyramid_rungs",
147+
"severity_pyramid_rungs",
148148
"base",
149149
"source__name",
150150
"time_label",

src/templates/signals/signal_detail.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ <h5>Signals with same base</h5>
279279
</td>
280280
<td class="clickable-table-cell"
281281
onClick="location.href='{% url 'signal' pk=signal.id %}';">
282-
{{ signal.severenity_pyramid_rungs }}
282+
{{ signal.severity_pyramid_rungs }}
283283
</td>
284284
<td class="clickable-table-cell"
285285
onClick="location.href='{% url 'signal' pk=signal.id %}';">

src/templates/signals/signals.html

+9-9
Original file line numberDiff line numberDiff line change
@@ -131,12 +131,12 @@ <h2 class="accordion-header" id="flush-heading_{{ form.available_geography.auto_
131131
</div>
132132
</div>
133133
<div class="accordion-item">
134-
<h2 class="accordion-header" id="flush-heading_{{ form.severenity_pyramid_rungs.auto_id }}">
134+
<h2 class="accordion-header" id="flush-heading_{{ form.severity_pyramid_rungs.auto_id }}">
135135
<button data-mdb-collapse-init class="accordion-button collapsed" type="button"
136136
data-mdb-toggle="collapse"
137-
data-mdb-target="#flush-collapse_{{ form.severenity_pyramid_rungs.auto_id }}"
137+
data-mdb-target="#flush-collapse_{{ form.severity_pyramid_rungs.auto_id }}"
138138
aria-expanded="false"
139-
aria-controls="flush-collapse_{{ form.severenity_pyramid_rungs.auto_id }}">
139+
aria-controls="flush-collapse_{{ form.severity_pyramid_rungs.auto_id }}">
140140
Severity Pyramid
141141
<a
142142
tabindex="0"
@@ -147,22 +147,22 @@ <h2 class="accordion-header" id="flush-heading_{{ form.severenity_pyramid_rungs.
147147
data-mdb-popover-init
148148
data-mdb-trigger="hover"
149149
data-mdb-placement="right"
150-
data-mdb-content="{{ filters_descriptions.SignalFilter.severenity_pyramid_rungs }}"
150+
data-mdb-content="{{ filters_descriptions.SignalFilter.severity_pyramid_rungs }}"
151151
>
152152
<i class="far fa-circle-question"></i>
153153
</a>
154154
</button>
155155
</h2>
156-
<div id="flush-collapse_{{ form.severenity_pyramid_rungs.auto_id }}"
157-
class="accordion-collapse {% if form.severenity_pyramid_rungs.value %} {% else %}collapse{% endif %}"
158-
aria-labelledby="flush-heading_{{ form.severenity_pyramid_rungs.auto_id }}"
156+
<div id="flush-collapse_{{ form.severity_pyramid_rungs.auto_id }}"
157+
class="accordion-collapse {% if form.severity_pyramid_rungs.value %} {% else %}collapse{% endif %}"
158+
aria-labelledby="flush-heading_{{ form.severity_pyramid_rungs.auto_id }}"
159159
data-mdb-parent="#accordionSignalFilters">
160160
<div class="accordion-body margin-top-1rem">
161161
<div class="bulk-select form-check">
162162
<input type="checkbox" class="form-check-input" id="select-all">
163163
<label class="form-check-label" for="select-all">Select all</label>
164164
</div>
165-
{{ form.severenity_pyramid_rungs|as_crispy_field }}
165+
{{ form.severity_pyramid_rungs|as_crispy_field }}
166166
</div>
167167
</div>
168168
</div>
@@ -405,7 +405,7 @@ <h2 class="accordion-header" id="flush-heading_id_signal_availability">
405405
</td>
406406
<td class="clickable-table-cell"
407407
onClick="location.href='{% url 'signal' pk=signal.id %}';">
408-
{{ signal.severenity_pyramid_rungs }}
408+
{{ signal.severity_pyramid_rungs }}
409409
</td>
410410
<td class="clickable-table-cell"
411411
onClick="location.href='{% url 'signal' pk=signal.id %}';">

0 commit comments

Comments
 (0)