Skip to content

Commit db32c13

Browse files
committed
Fixed geographic scope during singals import.
1 parent a020fd4 commit db32c13

File tree

3 files changed

+40
-2
lines changed

3 files changed

+40
-2
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# Generated by Django 4.2.10 on 2024-06-10 13:32
2+
3+
from django.db import migrations, models
4+
import django.db.models.deletion
5+
6+
7+
class Migration(migrations.Migration):
8+
9+
dependencies = [
10+
('signals', '0015_signal_from_date_signal_to_date_and_more'),
11+
]
12+
13+
operations = [
14+
migrations.RemoveField(
15+
model_name='signal',
16+
name='geographic_scope',
17+
),
18+
migrations.AddField(
19+
model_name='signal',
20+
name='geographic_scope',
21+
field=models.ForeignKey(help_text='Geographic Scope', null=True, on_delete=django.db.models.deletion.SET_NULL, to='signals.geographicscope'),
22+
),
23+
]

src/signals/models.py

+4-2
Original file line numberDiff line numberDiff line change
@@ -368,9 +368,11 @@ class Signal(TimeStampedModel):
368368
help_text=_('Signal links'),
369369
related_name="signals"
370370
)
371-
geographic_scope: models.ManyToManyField = models.ManyToManyField(
371+
geographic_scope: models.ForeignKey = models.ForeignKey(
372372
'signals.GeographicScope',
373-
help_text=_('Geographic Scope')
373+
help_text=_('Geographic Scope'),
374+
on_delete=models.SET_NULL,
375+
null=True
374376
)
375377
available_geography: models.ManyToManyField = models.ManyToManyField(
376378
'signals.Geography',

src/signals/resources.py

+13
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
Signal,
1717
SignalCategory,
1818
SignalType,
19+
GeographicScope,
1920
)
2021

2122

@@ -144,6 +145,11 @@ class SignalResource(resources.ModelResource):
144145
attribute='temporal_scope_end',
145146
column_name='Temporal Scope End',
146147
)
148+
geographic_scope = Field(
149+
attribute='geographic_scope',
150+
column_name='Geographic Scope',
151+
widget=widgets.ForeignKeyWidget(GeographicScope, field='name'),
152+
)
147153
# gender_breakdown = Field(attribute='gender_breakdown', column_name='Gender Breakdown')
148154
# race_breakdown = Field(attribute='race_breakdown', column_name='Race Breakdown')
149155
# age_breakdown = Field(attribute='age_breakdown', column_name='Age Breakdown')
@@ -177,6 +183,7 @@ class Meta:
177183
'missingness',
178184
'temporal_scope_start',
179185
'temporal_scope_end',
186+
'geographic_scope',
180187
# 'gender_breakdown',
181188
# 'race_breakdown',
182189
# 'age_breakdown',
@@ -204,6 +211,7 @@ def before_import_row(self, row, **kwargs) -> None:
204211
self.process_license(row)
205212
self.process_signal_category(row)
206213
self.process_signal_type(row)
214+
self.process_geographic_scope(row)
207215
self.process_demographic_scope(row)
208216

209217
def is_url_in_domain(self, url, domain) -> Any:
@@ -337,6 +345,11 @@ def process_signal_type(self, row):
337345
signal_type, created = SignalType.objects.get_or_create(name=row['Signal Type'])
338346
row['Signal Type'] = signal_type
339347

348+
def process_geographic_scope(self, row):
349+
if row['Geographic Scope']:
350+
geographic_scope, created = GeographicScope.objects.get_or_create(name=row['Geographic Scope'])
351+
row['Geographic Scope'] = geographic_scope
352+
340353
def after_import_row(self, row, row_result, **kwargs) -> None:
341354
"""
342355
Post-processes each row after importing.

0 commit comments

Comments
 (0)