Skip to content

Commit 16fcf88

Browse files
authored
Merge pull request #176 from cmu-delphi/staging
Staging
2 parents f2498f3 + 790963e commit 16fcf88

File tree

3 files changed

+48
-11
lines changed

3 files changed

+48
-11
lines changed

src/datasources/resources.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@
44
from datasources.models import SourceSubdivision, OtherEndpointSourceSubdivision
55

66

7+
def strip_all_string_values(row) -> None:
8+
for key, value in row.items():
9+
# Check if the value is a string and not None
10+
if isinstance(value, str):
11+
row[key] = value.strip()
12+
13+
714
class SourceSubdivisionResource(resources.ModelResource):
815
name = Field(
916
attribute="name",
@@ -68,6 +75,9 @@ class Meta:
6875
)
6976
exclude = ("id", )
7077

78+
def before_import_row(self, row, **kwargs):
79+
strip_all_string_values(row)
80+
7181
def after_save_instance(self, instance, row, **kwargs):
7282
instance.source_type = "other_endpoint"
7383
instance.save()

src/indicators/resources.py

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -62,17 +62,16 @@ def process_pathogens(row) -> None:
6262
row["Pathogen/\nDisease Area"] = ",".join(str(el) for el in pathogen_ids)
6363

6464

65-
def process_indicator_set(row, source_type="covidcast") -> None:
65+
def process_indicator_set(row) -> None:
6666
if row["Indicator Set"]:
6767
indicator_set_name = row["Indicator Set"].strip()
68-
indicator_set_obj, _ = IndicatorSet.objects.get_or_create(
69-
name=indicator_set_name,
70-
defaults={
71-
"name": indicator_set_name,
72-
"source_type": source_type,
73-
},
68+
indicator_set_obj = IndicatorSet.objects.get(
69+
name=indicator_set_name
7470
)
75-
row["Indicator Set"] = indicator_set_obj.id
71+
if indicator_set_obj:
72+
row["Indicator Set"] = indicator_set_obj.id
73+
else:
74+
row["Indicator Set"] = None
7675

7776

7877
def process_indicator_type(row) -> None:
@@ -247,6 +246,13 @@ def import_row(self, row, instance_loader, **kwargs):
247246
return import_result
248247

249248

249+
def strip_all_string_values(row) -> None:
250+
for key, value in row.items():
251+
# Check if the value is a string and not None
252+
if isinstance(value, str):
253+
row[key] = value.strip()
254+
255+
250256
class PermissiveForeignKeyWidget(ForeignKeyWidget):
251257

252258
def clean(self, value, row=None, **kwargs):
@@ -277,6 +283,7 @@ class Meta:
277283

278284
def before_import_row(self, row, **kwargs) -> None:
279285
"""Post-processes each row after importing."""
286+
strip_all_string_values(row)
280287
process_base(row)
281288

282289

@@ -454,6 +461,7 @@ def get_instance(self, instance_loader, row):
454461

455462
def before_import_row(self, row, **kwargs) -> None:
456463
"""Post-processes each row after importing."""
464+
strip_all_string_values(row)
457465
fix_boolean_fields(row)
458466
process_pathogens(row)
459467
process_indicator_type(row)
@@ -475,6 +483,8 @@ def after_save_instance(self, instance, row, **kwargs):
475483
def skip_row(self, instance, original, row, import_validation_errors=None):
476484
if not row["Include in indicator app"]:
477485
return True
486+
if row["Indicator Set"] is None:
487+
return True
478488

479489

480490
class OtherEndpointIndicatorResource(ModelResource):
@@ -628,6 +638,7 @@ class Meta:
628638

629639
def before_import_row(self, row, **kwargs) -> None:
630640
"""Post-processes each row after importing."""
641+
strip_all_string_values(row)
631642
fix_boolean_fields(row)
632643
process_source(row)
633644
process_pathogens(row)
@@ -637,11 +648,13 @@ def before_import_row(self, row, **kwargs) -> None:
637648
process_geographic_scope(row)
638649
process_severity_pyramid_rungs(row)
639650
process_available_geographies(row)
640-
process_indicator_set(row, source_type="other_endpoint")
651+
process_indicator_set(row)
641652

642653
def skip_row(self, instance, original, row, import_validation_errors=None):
643654
if not row["Include in indicator app"]:
644655
return True
656+
if row["Indicator Set"] is None:
657+
return True
645658

646659
def after_import_row(self, row, row_result, **kwargs):
647660
process_indicator_geography(row)
@@ -677,8 +690,9 @@ class Meta:
677690

678691
def before_import_row(self, row, **kwargs) -> None:
679692
"""Post-processes each row after importing."""
693+
strip_all_string_values(row)
680694
fix_boolean_fields(row)
681-
process_indicator_set(row, source_type="non_delphi")
695+
process_indicator_set(row)
682696

683697
def skip_row(self, instance, original, row, import_validation_errors=None):
684698
if not row["Include in indicator app"]:

src/indicatorsets/resources.py

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,13 @@ def fix_boolean_fields(row) -> None:
9898
return row
9999

100100

101+
def strip_all_string_values(row) -> None:
102+
for key, value in row.items():
103+
# Check if the value is a string and not None
104+
if isinstance(value, str):
105+
row[key] = value.strip()
106+
107+
101108
class IndicatorSetResource(resources.ModelResource):
102109
name = Field(attribute="name", column_name="Indicator Set name* ")
103110
short_name = Field(attribute="short_name", column_name="Indicator Set Short Name")
@@ -241,14 +248,19 @@ def skip_row(self, instance, original, row, import_validation_errors=None):
241248
return True
242249

243250
def before_import_row(self, row, **kwargs):
251+
strip_all_string_values(row)
244252
fix_boolean_fields(row)
245253
process_geographic_scope(row)
246254
process_severity_pyramid_rungs(row)
247255
process_pathogens(row)
248256
process_available_geographies(row)
249257

250258
def after_save_instance(self, instance, row, **kwargs):
251-
instance.source_type = "covidcast" if instance.epidata_endpoint == "covidcast" else "other_endpoint"
259+
instance.source_type = (
260+
"covidcast"
261+
if instance.epidata_endpoint == "covidcast"
262+
else "other_endpoint"
263+
)
252264
instance.save()
253265

254266

@@ -381,6 +393,7 @@ def skip_row(self, instance, original, row, import_validation_errors=None):
381393
return True
382394

383395
def before_import_row(self, row, **kwargs):
396+
strip_all_string_values(row)
384397
fix_boolean_fields(row)
385398
process_geographic_scope(row)
386399
process_severity_pyramid_rungs(row)

0 commit comments

Comments
 (0)