@@ -95,86 +95,87 @@ def populate(self) -> None:
95
95
self ._metadata .add_dataset (dataset )
96
96
dataset_id = dataset ["id" ]
97
97
dataset_name = dataset ["name" ]
98
- resource = dataset .get_resource (0 ) # assumes first resource is latest!
99
- self ._metadata .add_resource (dataset_id , resource )
100
- negative_values_by_iso3 = {}
101
- rounded_values_by_iso3 = {}
102
- resource_id = resource ["id" ]
103
- resource_name = resource ["name" ]
104
- year = int (resource_name [- 4 :])
105
- time_period_start = datetime (year , 1 , 1 )
106
- time_period_end = datetime (year , 12 , 31 , 23 , 59 , 59 )
107
- url = resource ["url" ]
108
- headers , rows = reader .get_tabular_rows (url , dict_form = True )
109
- # Admin 1 PCode,Admin 2 PCode,Sector,Gender,Age Group,Disabled,Population Group,Population,In Need,Targeted,Affected,Reached
110
- for row in rows :
111
- countryiso3 = row ["Country ISO3" ]
112
- admin2_ref = self .get_admin2_ref (row , dataset_name )
113
- if not admin2_ref :
114
- continue
115
- provider_admin1_name = get_provider_name (row , "Admin 1 Name" )
116
- provider_admin2_name = get_provider_name (row , "Admin 2 Name" )
117
- sector = row ["Sector" ]
118
- sector_code = self ._sector .get_sector_code (sector )
119
- if not sector_code :
120
- self ._error_manager .add_missing_value_message (
121
- "HumanitarianNeeds" , dataset_name , "sector" , sector
122
- )
123
- continue
124
- category = row ["Category" ]
125
- if category is None :
126
- category = ""
127
-
128
- def create_row (in_col , population_status ):
129
- value = row [in_col ]
130
- if value is None :
131
- return
132
- value = get_numeric_if_possible (value )
133
- if value < 0 :
134
- dict_of_lists_add (
135
- negative_values_by_iso3 , countryiso3 , str (value )
98
+ resources = dataset .get_resources ()
99
+ for resource in resources :
100
+ self ._metadata .add_resource (dataset_id , resource )
101
+ negative_values_by_iso3 = {}
102
+ rounded_values_by_iso3 = {}
103
+ resource_id = resource ["id" ]
104
+ resource_name = resource ["name" ]
105
+ year = int (resource_name [- 4 :])
106
+ time_period_start = datetime (year , 1 , 1 )
107
+ time_period_end = datetime (year , 12 , 31 , 23 , 59 , 59 )
108
+ url = resource ["url" ]
109
+ headers , rows = reader .get_tabular_rows (url , dict_form = True )
110
+ # Admin 1 PCode,Admin 2 PCode,Sector,Gender,Age Group,Disabled,Population Group,Population,In Need,Targeted,Affected,Reached
111
+ for row in rows :
112
+ countryiso3 = row ["Country ISO3" ]
113
+ admin2_ref = self .get_admin2_ref (row , dataset_name )
114
+ if not admin2_ref :
115
+ continue
116
+ provider_admin1_name = get_provider_name (row , "Admin 1 Name" )
117
+ provider_admin2_name = get_provider_name (row , "Admin 2 Name" )
118
+ sector = row ["Sector" ]
119
+ sector_code = self ._sector .get_sector_code (sector )
120
+ if not sector_code :
121
+ self ._error_manager .add_missing_value_message (
122
+ "HumanitarianNeeds" , dataset_name , "sector" , sector
136
123
)
137
- return
138
- if isinstance (value , float ):
139
- dict_of_lists_add (
140
- rounded_values_by_iso3 , countryiso3 , str (value )
124
+ continue
125
+ category = row ["Category" ]
126
+ if category is None :
127
+ category = ""
128
+
129
+ def create_row (in_col , population_status ):
130
+ value = row [in_col ]
131
+ if value is None :
132
+ return
133
+ value = get_numeric_if_possible (value )
134
+ if value < 0 :
135
+ dict_of_lists_add (
136
+ negative_values_by_iso3 , countryiso3 , str (value )
137
+ )
138
+ return
139
+ if isinstance (value , float ):
140
+ dict_of_lists_add (
141
+ rounded_values_by_iso3 , countryiso3 , str (value )
142
+ )
143
+ value = round (value )
144
+ humanitarian_needs_row = DBHumanitarianNeeds (
145
+ resource_hdx_id = resource_id ,
146
+ admin2_ref = admin2_ref ,
147
+ provider_admin1_name = provider_admin1_name ,
148
+ provider_admin2_name = provider_admin2_name ,
149
+ category = category ,
150
+ sector_code = sector_code ,
151
+ population_status = population_status ,
152
+ population = value ,
153
+ reference_period_start = time_period_start ,
154
+ reference_period_end = time_period_end ,
141
155
)
142
- value = round (value )
143
- humanitarian_needs_row = DBHumanitarianNeeds (
144
- resource_hdx_id = resource_id ,
145
- admin2_ref = admin2_ref ,
146
- provider_admin1_name = provider_admin1_name ,
147
- provider_admin2_name = provider_admin2_name ,
148
- category = category ,
149
- sector_code = sector_code ,
150
- population_status = population_status ,
151
- population = value ,
152
- reference_period_start = time_period_start ,
153
- reference_period_end = time_period_end ,
154
- )
155
- self ._session .add (humanitarian_needs_row )
156
+ self ._session .add (humanitarian_needs_row )
156
157
157
- create_row ("Population" , "all" )
158
- create_row ("Affected" , "AFF" )
159
- create_row ("In Need" , "INN" )
160
- create_row ("Targeted" , "TGT" )
161
- create_row ("Reached" , "REA" )
158
+ create_row ("Population" , "all" )
159
+ create_row ("Affected" , "AFF" )
160
+ create_row ("In Need" , "INN" )
161
+ create_row ("Targeted" , "TGT" )
162
+ create_row ("Reached" , "REA" )
162
163
163
- self ._session .commit ()
164
- for countryiso3 , values in negative_values_by_iso3 .items ():
165
- self ._error_manager .add_multi_valued_message (
166
- "HumanitarianNeeds" ,
167
- dataset_name ,
168
- f"negative population value(s) removed in { countryiso3 } " ,
169
- values ,
170
- resource_name = resource_name ,
171
- err_to_hdx = True ,
172
- )
173
- for countryiso3 , values in rounded_values_by_iso3 .items ():
174
- self ._error_manager .add_multi_valued_message (
175
- "HumanitarianNeeds" ,
176
- dataset_name ,
177
- f"population value(s) rounded in { countryiso3 } " ,
178
- values ,
179
- message_type = "warning" ,
180
- )
164
+ self ._session .commit ()
165
+ for countryiso3 , values in negative_values_by_iso3 .items ():
166
+ self ._error_manager .add_multi_valued_message (
167
+ "HumanitarianNeeds" ,
168
+ dataset_name ,
169
+ f"negative population value(s) removed in { countryiso3 } " ,
170
+ values ,
171
+ resource_name = resource_name ,
172
+ err_to_hdx = True ,
173
+ )
174
+ for countryiso3 , values in rounded_values_by_iso3 .items ():
175
+ self ._error_manager .add_multi_valued_message (
176
+ "HumanitarianNeeds" ,
177
+ dataset_name ,
178
+ f"population value(s) rounded in { countryiso3 } " ,
179
+ values ,
180
+ message_type = "warning" ,
181
+ )
0 commit comments