Skip to content

Commit 7860c92

Browse files
committed
Add case-insenstive name index for LivelihoodZoneBaseline - see HEA-1048
1 parent 2744375 commit 7860c92

2 files changed

Lines changed: 76 additions & 2 deletions

File tree

apps/baseline/migrations/0031_case_insensitive_indexes.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,4 +84,52 @@ class Migration(migrations.Migration):
8484
name="baseline_livelihoodzone_name_pt_lower_uniq",
8585
),
8686
),
87+
migrations.RemoveConstraint(
88+
model_name="livelihoodzonebaseline",
89+
name="baseline_livelihoodzonebaseline_name_en_reference_year_end_date_uniq",
90+
),
91+
migrations.AddConstraint(
92+
model_name="livelihoodzonebaseline",
93+
constraint=models.UniqueConstraint(
94+
django.db.models.functions.text.Lower("name_en"),
95+
models.F("reference_year_end_date"),
96+
name="baseline_livelihoodzonebaseline_name_en_lower_uniq",
97+
),
98+
),
99+
migrations.AddConstraint(
100+
model_name="livelihoodzonebaseline",
101+
constraint=models.UniqueConstraint(
102+
django.db.models.functions.text.Lower("name_ar"),
103+
models.F("reference_year_end_date"),
104+
condition=models.Q(("name_ar", ""), _negated=True),
105+
name="baseline_livelihoodzonebaseline_name_ar_lower_uniq",
106+
),
107+
),
108+
migrations.AddConstraint(
109+
model_name="livelihoodzonebaseline",
110+
constraint=models.UniqueConstraint(
111+
django.db.models.functions.text.Lower("name_es"),
112+
models.F("reference_year_end_date"),
113+
condition=models.Q(("name_es", ""), _negated=True),
114+
name="baseline_livelihoodzonebaseline_name_es_lower_uniq",
115+
),
116+
),
117+
migrations.AddConstraint(
118+
model_name="livelihoodzonebaseline",
119+
constraint=models.UniqueConstraint(
120+
django.db.models.functions.text.Lower("name_fr"),
121+
models.F("reference_year_end_date"),
122+
condition=models.Q(("name_fr", ""), _negated=True),
123+
name="baseline_livelihoodzonebaseline_name_fr_lower_uniq",
124+
),
125+
),
126+
migrations.AddConstraint(
127+
model_name="livelihoodzonebaseline",
128+
constraint=models.UniqueConstraint(
129+
django.db.models.functions.text.Lower("name_pt"),
130+
models.F("reference_year_end_date"),
131+
condition=models.Q(("name_pt", ""), _negated=True),
132+
name="baseline_livelihoodzonebaseline_name_pt_lower_uniq",
133+
),
134+
),
87135
]

apps/baseline/models.py

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -340,9 +340,35 @@ class Meta:
340340
fields=("livelihood_zone", "reference_year_end_date"),
341341
name="baseline_livelihoodzonebaseline_livelihood_zone_reference_year_end_date_uniq",
342342
),
343+
# Create a case-insensitive unique constraint on the name
344+
models.UniqueConstraint(
345+
Lower("name_en"),
346+
"reference_year_end_date",
347+
name="baseline_livelihoodzonebaseline_name_en_lower_uniq",
348+
),
349+
models.UniqueConstraint(
350+
Lower("name_ar"),
351+
"reference_year_end_date",
352+
name="baseline_livelihoodzonebaseline_name_ar_lower_uniq",
353+
condition=~Q(name_ar=""),
354+
),
355+
models.UniqueConstraint(
356+
Lower("name_es"),
357+
"reference_year_end_date",
358+
name="baseline_livelihoodzonebaseline_name_es_lower_uniq",
359+
condition=~Q(name_es=""),
360+
),
343361
models.UniqueConstraint(
344-
fields=("name_en", "reference_year_end_date"),
345-
name="baseline_livelihoodzonebaseline_name_en_reference_year_end_date_uniq",
362+
Lower("name_fr"),
363+
"reference_year_end_date",
364+
name="baseline_livelihoodzonebaseline_name_fr_lower_uniq",
365+
condition=~Q(name_fr=""),
366+
),
367+
models.UniqueConstraint(
368+
Lower("name_pt"),
369+
"reference_year_end_date",
370+
name="baseline_livelihoodzonebaseline_name_pt_lower_uniq",
371+
condition=~Q(name_pt=""),
346372
),
347373
]
348374

0 commit comments

Comments
 (0)