Skip to content

Commit 8c2afa4

Browse files
author
Dmytro Trotsko
committed
Fixed indicators update when some cols where changed
1 parent 58883ed commit 8c2afa4

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 5.2.5 on 2025-10-10 20:33
2+
3+
from django.db import migrations
4+
5+
6+
class Migration(migrations.Migration):
7+
8+
dependencies = [
9+
("base", "0001_initial"),
10+
]
11+
12+
operations = [
13+
migrations.AlterModelOptions(
14+
name="geography",
15+
options={
16+
"ordering": ["display_order_number"],
17+
"verbose_name": "Geography",
18+
"verbose_name_plural": "Geographies",
19+
},
20+
),
21+
]

src/indicators/resources.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -410,9 +410,30 @@ class Meta:
410410
"restrictions",
411411
"indicator_set",
412412
]
413-
import_id_fields: list[str] = ["name", "source"]
413+
import_id_fields: list[str] = ["name", "indicator_set", "source"]
414414
skip_unchanged = True
415415

416+
def get_instance(self, instance_loader, row):
417+
name = row.get("Signal")
418+
source = row.get("Source Subdivision")
419+
indicator_set = row.get("Indicator Set")
420+
421+
# Try to match by (name, source)
422+
if name and source:
423+
try:
424+
return self._meta.model.objects.get(name=name, source__name=source)
425+
except self._meta.model.DoesNotExist:
426+
pass
427+
428+
# Try to match by (name, indicator_set)
429+
if name and indicator_set:
430+
try:
431+
return self._meta.model.objects.get(name=name, indicator_set__name=indicator_set)
432+
except self._meta.model.DoesNotExist:
433+
pass
434+
435+
return None
436+
416437
def before_import_row(self, row, **kwargs) -> None:
417438
"""Post-processes each row after importing."""
418439
fix_boolean_fields(row)

0 commit comments

Comments
 (0)