From 7471e18d167fb6eb4ab061df43b94e222196b17e Mon Sep 17 00:00:00 2001 From: k9845 Date: Wed, 8 May 2024 11:28:38 +0545 Subject: [PATCH 1/2] Add GNI Per Capita for WB --- .../management/commands/ingest_worldbank.py | 7 +++++-- ...25_countryoverview_world_bank_gni_capita.py | 18 ++++++++++++++++++ databank/models.py | 4 ++++ 3 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 databank/migrations/0025_countryoverview_world_bank_gni_capita.py diff --git a/databank/management/commands/ingest_worldbank.py b/databank/management/commands/ingest_worldbank.py index 786ffc1eb..d2e34d12f 100644 --- a/databank/management/commands/ingest_worldbank.py +++ b/databank/management/commands/ingest_worldbank.py @@ -24,7 +24,8 @@ def handle(self, *args, **kwargs): ('IQ.CPA.GNDR.XQ', CO.world_bank_gender_inequality_index), ('SP.DYN.LE00.IN', CO.world_bank_life_expectancy), ('SE.ADT.LITR.ZS', CO.world_bank_literacy_rate), - ('SI.POV.NAHC', CO.world_bank_poverty_rate) + ('SI.POV.NAHC', CO.world_bank_poverty_rate), + ('NY.GNP.PCAP.CD', CO.world_bank_gni_capita) ) world_bank_indicators = [indicator for indicator, _ in world_bank_indicator_map] @@ -95,6 +96,7 @@ def handle(self, *args, **kwargs): overview.world_bank_life_expectancy = indicators[7][0] overview.world_bank_literacy_rate = indicators[8][0] overview.world_bank_poverty_rate = indicators[9][0] + overview.world_bank_gni_capita = indicators[10][0] overview.save( update_fields=[ 'world_bank_population', @@ -106,6 +108,7 @@ def handle(self, *args, **kwargs): 'world_bank_gender_inequality_index', 'world_bank_life_expectancy', 'world_bank_literacy_rate', - 'world_bank_poverty_rate' + 'world_bank_poverty_rate', + 'world_bank_gni_capita' ] ) diff --git a/databank/migrations/0025_countryoverview_world_bank_gni_capita.py b/databank/migrations/0025_countryoverview_world_bank_gni_capita.py new file mode 100644 index 000000000..a9872850c --- /dev/null +++ b/databank/migrations/0025_countryoverview_world_bank_gni_capita.py @@ -0,0 +1,18 @@ +# Generated by Django 3.2.25 on 2024-05-08 05:39 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('databank', '0024_countryoverview_fdrs_data_fetched_year'), + ] + + operations = [ + migrations.AddField( + model_name='countryoverview', + name='world_bank_gni_capita', + field=models.IntegerField(blank=True, null=True, verbose_name='world bank GNI Per Capita'), + ), + ] diff --git a/databank/models.py b/databank/models.py index 52b85667f..1fb1eb19e 100644 --- a/databank/models.py +++ b/databank/models.py @@ -523,6 +523,10 @@ class CountryOverview(models.Model): verbose_name=_('world bank poverty rate'), null=True, blank=True ) + world_bank_gni_capita = models.IntegerField( + verbose_name=_('world bank GNI Per Capita'), + null=True, blank=True + ) # fetched from unicef unicef_population_under_18 = models.IntegerField( From 16a0e0d33b1f8ebe53073dc14680c4bf7a797dca Mon Sep 17 00:00:00 2001 From: k9845 Date: Thu, 9 May 2024 14:04:38 +0545 Subject: [PATCH 2/2] Allow all Delegation in Country --- api/serializers.py | 8 +++++--- databank/management/commands/ingest_worldbank.py | 2 +- local_units/serializers.py | 3 +++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/api/serializers.py b/api/serializers.py index b6aa0daed..dffaa6c27 100644 --- a/api/serializers.py +++ b/api/serializers.py @@ -6,6 +6,7 @@ from django.contrib.auth.models import User from django.conf import settings from django.db import transaction +from django.db import models from django.contrib.auth.models import Permission from django.utils.translation import get_language as django_get_language @@ -775,18 +776,19 @@ def get_centroid(country) -> dict: return country.centroid and json.loads(country.centroid.geojson) @extend_schema_field( - MiniDelegationOfficeSerializer + MiniDelegationOfficeSerializer(many=True) ) def get_country_delegation(self, country): return DelegationOffice.objects.filter( - dotype__name="Country Delegation", country=country, ).values( 'hod_first_name', 'hod_last_name', 'hod_mobile_number', 'hod_email', - ).first() + ).annotate( + dotype_name=models.F('dotype__name') + ).distinct() class CountryKeyDocumentSerializer(ModelSerializer): diff --git a/databank/management/commands/ingest_worldbank.py b/databank/management/commands/ingest_worldbank.py index d2e34d12f..b74cb8939 100644 --- a/databank/management/commands/ingest_worldbank.py +++ b/databank/management/commands/ingest_worldbank.py @@ -109,6 +109,6 @@ def handle(self, *args, **kwargs): 'world_bank_life_expectancy', 'world_bank_literacy_rate', 'world_bank_poverty_rate', - 'world_bank_gni_capita' + 'world_bank_gni_capita', ] ) diff --git a/local_units/serializers.py b/local_units/serializers.py index 3f6c1cf1e..190e475d2 100644 --- a/local_units/serializers.py +++ b/local_units/serializers.py @@ -139,6 +139,8 @@ class LocalUnitOptionsSerializer(serializers.Serializer): class MiniDelegationOfficeSerializer(serializers.ModelSerializer): + dotype_name = serializers.CharField(source='dotype.name', read_only=True) + class Meta: model = DelegationOffice fields = ( @@ -146,4 +148,5 @@ class Meta: 'hod_last_name', 'hod_mobile_number', 'hod_email', + 'dotype_name' )