8
8
from hdx .api .utilities .hdx_error_handler import HDXErrorHandler
9
9
from hdx .scraper .framework .utilities .reader import Read
10
10
from hdx .utilities .dateparse import parse_date
11
- from hdx .utilities .dictandlist import dict_of_lists_add
11
+ from hdx .utilities .dictandlist import dict_of_lists_add , invert_dictionary
12
12
from hdx .utilities .text import get_numeric_if_possible
13
13
from sqlalchemy .orm import Session
14
14
15
15
from ..utilities .provider_admin_names import get_provider_name
16
16
from . import admins
17
- from .admins import get_admin1_to_location_connector_code
18
17
from .base_uploader import BaseUploader
19
18
from .metadata import Metadata
20
19
@@ -36,29 +35,6 @@ def __init__(
36
35
self ._configuration = configuration
37
36
self ._error_handler = error_handler
38
37
39
- def get_admin1_ref (self , row , dataset_name ):
40
- countryiso3 = row ["country_code" ]
41
- if countryiso3 == "#country+code" : # ignore HXL row
42
- return None
43
- admin_code = row ["admin1_code" ]
44
- if admin_code :
45
- admin_level = "adminone"
46
- else :
47
- admin1_name = row ["admin1_name" ]
48
- if admin1_name :
49
- admin_level = "adminone"
50
- admin_code = get_admin1_to_location_connector_code (countryiso3 )
51
- else :
52
- admin_level = "national"
53
- admin_code = countryiso3
54
- return self ._admins .get_admin1_ref (
55
- admin_level ,
56
- admin_code ,
57
- dataset_name ,
58
- "PovertyRate" ,
59
- self ._error_handler ,
60
- )
61
-
62
38
def populate (self ) -> None :
63
39
logger .info ("Populating poverty rate table" )
64
40
reader = Read .get_reader ("hdx" )
@@ -69,9 +45,9 @@ def populate(self) -> None:
69
45
null_values_by_iso3 = {}
70
46
71
47
def get_value (row : Dict , in_col : str ) -> float :
72
- countryiso3 = row ["country_code " ]
48
+ countryiso3 = row ["Country ISO3 " ]
73
49
value = row [in_col ]
74
- admin_name = row ["admin1_name " ]
50
+ admin_name = row ["Admin 1 Name " ]
75
51
if not admin_name :
76
52
admin_name = countryiso3
77
53
if value is None :
@@ -84,18 +60,24 @@ def get_value(row: Dict, in_col: str) -> float:
84
60
resource_id = resource ["id" ]
85
61
self ._metadata .add_resource (dataset_id , resource )
86
62
url = resource ["url" ]
87
- _ , rows = reader .get_tabular_rows (url , dict_form = True )
88
-
89
- # country_code,admin1_code,admin1_name,mpi,headcount_ratio,intensity_of_deprivation,vulnerable_to_poverty,in_severe_poverty,reference_period_start,reference_period_end
63
+ header , rows = reader .get_tabular_rows (url , dict_form = True )
64
+ hxltag_to_header = invert_dictionary (next (rows ))
90
65
for row in rows :
91
- admin1_ref = self .get_admin1_ref (row , dataset_name )
66
+ admin_level = self ._admins .get_admin_level_from_row (
67
+ hxltag_to_header , row , 1
68
+ )
69
+ admin1_ref = self ._admins .get_admin1_ref_from_row (
70
+ hxltag_to_header ,
71
+ row ,
72
+ dataset_name ,
73
+ "PovertyRate" ,
74
+ admin_level ,
75
+ )
92
76
if not admin1_ref :
93
77
continue
94
- provider_admin1_name = get_provider_name (row , "admin1_name" )
95
- reference_period_start = parse_date (
96
- row ["reference_period_start" ]
97
- )
98
- reference_period_end = parse_date (row ["reference_period_end" ])
78
+ provider_admin1_name = get_provider_name (row , "Admin 1 Name" )
79
+ reference_period_start = parse_date (row ["Start Date" ])
80
+ reference_period_end = parse_date (row ["End Date" ])
99
81
key = (
100
82
admin1_ref ,
101
83
provider_admin1_name ,
@@ -118,15 +100,15 @@ def get_value(row: Dict, in_col: str) -> float:
118
100
provider_admin1_name = provider_admin1_name ,
119
101
reference_period_start = reference_period_start ,
120
102
reference_period_end = reference_period_end ,
121
- mpi = get_value (row , "mpi " ),
122
- headcount_ratio = get_value (row , "headcount_ratio " ),
103
+ mpi = get_value (row , "MPI " ),
104
+ headcount_ratio = get_value (row , "Headcount Ratio " ),
123
105
intensity_of_deprivation = get_value (
124
- row , "intensity_of_deprivation "
106
+ row , "Intensity of Deprivation "
125
107
),
126
108
vulnerable_to_poverty = get_value (
127
- row , "vulnerable_to_poverty "
109
+ row , "Vulnerable to Poverty "
128
110
),
129
- in_severe_poverty = get_value (row , "in_severe_poverty " ),
111
+ in_severe_poverty = get_value (row , "In Severe Poverty " ),
130
112
)
131
113
self ._session .add (row )
132
114
self ._session .commit ()
0 commit comments