Skip to content

Commit 4ff87cd

Browse files
committed
Cascade the model changes to the admin and related parts see HEA-874
1 parent 6927c2f commit 4ff87cd

6 files changed

Lines changed: 58 additions & 5 deletions

File tree

apps/baseline/serializers.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,11 @@ def get_characteristic_group(self, obj):
438438
"""
439439
if obj.product and obj.product.cpc.startswith("L02"):
440440
return "Livestock"
441-
return obj.wealth_characteristic.characteristic_group
441+
return (
442+
obj.wealth_characteristic.characteristic_group.code
443+
if obj.wealth_characteristic.characteristic_group
444+
else None
445+
)
442446

443447
product_common_name = serializers.CharField(source="product.common_name", read_only=True, allow_null=True)
444448
unit_of_measure_description = serializers.CharField(
@@ -542,7 +546,11 @@ def get_characteristic_group(self, obj):
542546
"""
543547
if obj.product and obj.product.cpc.startswith("L02"):
544548
return "Livestock"
545-
return obj.wealth_characteristic.characteristic_group
549+
return (
550+
obj.wealth_characteristic.characteristic_group.code
551+
if obj.wealth_characteristic.characteristic_group
552+
else None
553+
)
546554

547555
product_common_name = serializers.CharField(source="product.common_name", read_only=True, allow_null=True)
548556
unit_of_measure_description = serializers.CharField(

apps/baseline/tests/test_viewsets.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
from common.tests.factories import ClassifiedProductFactory, CountryFactory
2020
from metadata.models import LivelihoodActivityScenario
2121
from metadata.tests.factories import (
22+
CharacteristicGroupFactory,
2223
LivelihoodCategoryFactory,
2324
WealthCharacteristicFactory,
2425
WealthGroupCategoryFactory,
@@ -1499,11 +1500,13 @@ def setUpTestData(cls):
14991500
wealth_group_category=cls.very_poor_wg,
15001501
community=cls.community,
15011502
)
1503+
# Create characteristic group
1504+
cls.population_group = CharacteristicGroupFactory(code="Population", name_en="Population")
15021505
# Create wealth characteristics
15031506
cls.char_with_group = WealthCharacteristicFactory(
15041507
code="household size",
15051508
name_en="Household size",
1506-
characteristic_group="Population",
1509+
characteristic_group=cls.population_group,
15071510
)
15081511
cls.char_without_group = WealthCharacteristicFactory(
15091512
code="other",

apps/metadata/admin.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
from .models import (
88
ActivityLabel,
9+
CharacteristicGroup,
910
HazardCategory,
1011
LivelihoodCategory,
1112
Market,
@@ -85,6 +86,12 @@ class WealthGroupCategoryAdmin(ReferenceDataAdmin):
8586
"""
8687

8788

89+
class CharacteristicGroupAdmin(ReferenceDataAdmin):
90+
"""
91+
A concrete admin for CharacteristicGroup
92+
"""
93+
94+
8895
class WealthCharacteristicAdmin(ReferenceDataAdmin):
8996
"""
9097
A concrete admin for WealthCharacteristic
@@ -98,7 +105,7 @@ class WealthCharacteristicAdmin(ReferenceDataAdmin):
98105
*translation_fields("description"),
99106
"characteristic_group",
100107
)
101-
list_filter = ("variable_type",)
108+
list_filter = ("variable_type", "characteristic_group")
102109

103110

104111
class HazardCategoryAdmin(ReferenceDataAdmin):
@@ -226,6 +233,7 @@ class WealthCharacteristicLabelAdmin(admin.ModelAdmin):
226233

227234
admin.site.register(LivelihoodCategory, LivelihoodCategoryAdmin)
228235
admin.site.register(WealthGroupCategory, WealthGroupCategoryAdmin)
236+
admin.site.register(CharacteristicGroup, CharacteristicGroupAdmin)
229237
admin.site.register(SeasonalActivityType, SeasonalActivityTypeAdmin)
230238

231239
admin.site.register(Market, MarketAdmin)

apps/metadata/tests/factories.py

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,13 @@
11
import factory
22

33
from common.tests.factories import CountryFactory
4-
from metadata.models import Market, Season, SeasonalActivityType, WealthCharacteristic
4+
from metadata.models import (
5+
CharacteristicGroup,
6+
Market,
7+
Season,
8+
SeasonalActivityType,
9+
WealthCharacteristic,
10+
)
511

612

713
class LivelihoodCategoryFactory(factory.django.DjangoModelFactory):
@@ -58,6 +64,24 @@ class Meta:
5864
description_fr = factory.LazyAttribute(lambda o: f"{o.name_fr} Wealth Group Category Description fr")
5965

6066

67+
class CharacteristicGroupFactory(factory.django.DjangoModelFactory):
68+
class Meta:
69+
model = CharacteristicGroup
70+
django_get_or_create = ("code",)
71+
72+
code = factory.Iterator(["Population", "Income", "Land", "Livestock", "Other assets"])
73+
name_en = factory.LazyAttribute(lambda o: f"{o.code}")
74+
name_pt = factory.LazyAttribute(lambda o: f"{o.code} pt")
75+
name_es = factory.LazyAttribute(lambda o: f"{o.code} es")
76+
name_fr = factory.LazyAttribute(lambda o: f"{o.code} fr")
77+
name_ar = factory.LazyAttribute(lambda o: f"{o.code} ar")
78+
description_en = factory.LazyAttribute(lambda o: f"{o.code} Description en")
79+
description_pt = factory.LazyAttribute(lambda o: f"{o.code} Description pt")
80+
description_es = factory.LazyAttribute(lambda o: f"{o.code} Description es")
81+
description_ar = factory.LazyAttribute(lambda o: f"{o.code} Description ar")
82+
description_fr = factory.LazyAttribute(lambda o: f"{o.code} Description fr")
83+
84+
6185
class WealthCharacteristicFactory(factory.django.DjangoModelFactory):
6286
class Meta:
6387
model = "metadata.WealthCharacteristic"
@@ -73,6 +97,7 @@ class Meta:
7397
)
7498
has_product = factory.Iterator([False, True])
7599
has_unit_of_measure = factory.Iterator([False, True])
100+
characteristic_group = factory.SubFactory(CharacteristicGroupFactory)
76101
name_en = factory.LazyAttribute(lambda o: f"{o.code} Wealth Characteristic en")
77102
name_pt = factory.LazyAttribute(lambda o: f"{o.code} Wealth Characteristic pt")
78103
name_es = factory.LazyAttribute(lambda o: f"{o.code} Wealth Characteristic es")

templates/admin/index.html

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -331,6 +331,12 @@
331331
<a href="{% url 'admin:metadata_wealthgroupcategory_changelist' %}">{% translate 'Wealth Categories' %}</a>
332332
</div>
333333
</div>
334+
<div class="card">
335+
<div class="card-body">
336+
<a href="{% url 'admin:metadata_characteristicgroup_changelist' %}">{% translate 'Characteristics Groups' %}</a>
337+
</div>
338+
</div>
339+
334340
<div class="card">
335341
<div class="card-body">
336342
<a href="{% url 'admin:metadata_wealthcharacteristic_changelist' %}">{% translate 'Wealth Group Characteristics' %}</a>

templates/admin/nav_sidebar.html

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -286,6 +286,9 @@
286286
<li><a class="link-dark rounded"
287287
href="{% url 'admin:metadata_wealthgroupcategory_changelist' %}">{% translate 'Wealth Categories' %}</a>
288288
</li>
289+
<li><a class="link-dark rounded"
290+
href="{% url 'admin:metadata_characteristicgroup_changelist' %}">{% translate 'Characteristics Groups' %}</a>
291+
</li>
289292
<li><a class="link-dark rounded"
290293
href="{% url 'admin:metadata_wealthcharacteristic_changelist' %}">{% translate 'Wealth Group Characteristics' %}</a>
291294
</li>

0 commit comments

Comments
 (0)