Skip to content

Commit

Permalink
Add district population data
Browse files Browse the repository at this point in the history
  • Loading branch information
k9845 committed Mar 11, 2024
1 parent bc848c1 commit 6a2e7b7
Show file tree
Hide file tree
Showing 3 changed files with 50 additions and 20 deletions.
Binary file added Population.GO.Admin1.Matched.xlsx
Binary file not shown.
28 changes: 28 additions & 0 deletions api/management/commands/ingest_admin1_population.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import pandas as pd

from django.core.management.base import BaseCommand

from api.models import Country, District
from api.logger import logger


class Command(BaseCommand):
help = "Population Data for District To run, python manage.py ingest_admin1_population Population.GO.Admin1.Matched.xlsx"

def add_arguments(self, parser):
parser.add_argument("filename", nargs="+", type=str)

def handle(self, *args, **kwargs):
logger.info("Updating population data for District")
filename = kwargs["filename"][0]
district_df = pd.read_excel(filename, usecols=['GO Names', 'ISO3', '2016'])
district_df = district_df.rename(columns={'GO Names': 'District'})
count = 0
for index, row in district_df.iterrows():
district = District.objects.filter(name=row['District'].strip(), country__iso3=row['ISO3']).first()
if district:
count += 1
district.wb_population = row['2016']
district.wb_year = '2016' # Get this from excel file
district.save(update_fields=['wb_population', 'wb_year'])
logger.info(f'Updated population data for {count} district')
42 changes: 22 additions & 20 deletions per/drf_views.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
PerComponentRating,
PerDocumentUpload,
FormQuestionGroup,
FormPrioritizationComponent
)
from .serializers import (
LatestCountryOverviewSerializer,
Expand Down Expand Up @@ -280,7 +281,7 @@ def get(self, request, pk, format=None):
'Date of Current PER Assessment',
'Type of Assessment',
'Branches involved',
#'Method',
'Method',
'EPI Considerations',
'Urban Considerations',
'Climate and env considerations',
Expand Down Expand Up @@ -320,7 +321,7 @@ def get(self, request, pk, format=None):
per.date_of_assessment,
per.type_of_assessment.name,
per.branches_involved,
#per.assessment_method_display(),
per.get_assessment_method_display(),
per.assess_preparedness_of_country,
per.assess_urban_aspect_of_country,
per.assess_climate_environment_of_country,
Expand Down Expand Up @@ -376,9 +377,9 @@ def get(self, request, pk, format=None):
for question in question_answer:
assessment_inner = [
co.component.component_num,
co.component.description,
co.component.description_en,
question.question.question_num,
question.question.description,
question.question.description_en,
question.answer.text,
co.epi_considerations,
co.urban_considerations,
Expand All @@ -401,23 +402,24 @@ def get(self, request, pk, format=None):
'Prioritized component description',
'Justification'
]
prioritization_rows = []
prioritization_num = 1
for col_num, column_title in enumerate(prioritization_columns, 1):
cell = ws_prioritization.cell(row=prioritization_num, column=col_num)
cell.value = column_title

prioritization_rows = []
prioritization_queryset = FormPrioritization.objects.filter(overview=per.id)
if prioritization_queryset.exists():
for prioritization in prioritization_queryset.first().prioritized_action_responses.all():
if prioritization.is_prioritized:
prioritization_inner = [
prioritization.component.component_num,
prioritization.component.description,
prioritization.justification_text
]
prioritization_rows.append(prioritization_inner)

prioritization_queryset = FormPrioritizationComponent.objects.filter(
formprioritization__overview=per.id,
)
for prioritization in prioritization_queryset:
prioritization_inner = [
prioritization.component.component_num,
prioritization.component.description,
prioritization.justification_text
]
prioritization_rows.append(
prioritization_inner
)
for row_num, row_data in enumerate(prioritization_rows, 2):
for col_num, cell_value in enumerate(row_data, 1):
cell = ws_prioritization.cell(row=row_num, column=col_num)
Expand All @@ -429,10 +431,10 @@ def get(self, request, pk, format=None):
workplan_columns = [
'Actions',
'Number of component related',
'Description of component related'
'Description of component related',
'Due date',
'Suported by',
'Status'
'Status',
]
workplan_rows = []
workplan_num = 1
Expand All @@ -446,10 +448,10 @@ def get(self, request, pk, format=None):
workplan_inner = [
workplan.actions,
workplan.component.component_num,
workplan.component.description,
workplan.component.description_en,
workplan.due_date,
workplan.supported_by.name if workplan.supported_by else None,
#workplan.status_display()
workplan.get_status_display()
]
workplan_rows.append(workplan_inner)
for row_num, row_data in enumerate(workplan_rows, 2):
Expand Down

0 comments on commit 6a2e7b7

Please sign in to comment.