Skip to content
Snippets Groups Projects
Commit 45aeb408 authored by Remco Tukker's avatar Remco Tukker
Browse files

make service conversion work

parent fd5cf329
Branches
Tags
1 merge request!66Conversion of services data
...@@ -110,8 +110,7 @@ def convert_answers(answers): ...@@ -110,8 +110,7 @@ def convert_answers(answers):
return {"data": data} return {"data": data}
def _cli(app): def load_service_data():
wb = openpyxl.load_workbook(EXCEL_FILE, data_only=True, read_only=True) wb = openpyxl.load_workbook(EXCEL_FILE, data_only=True, read_only=True)
ws = wb["Sheet1"] ws = wb["Sheet1"]
rows = list(ws.rows) rows = list(ws.rows)
...@@ -128,26 +127,30 @@ def _cli(app): ...@@ -128,26 +127,30 @@ def _cli(app):
nren_service_data = {} nren_service_data = {}
for nren_name, start_column in nren_service_data_columns.items(): for nren_name, start_column in nren_service_data_columns.items():
nren_service_data[nren_name] = {}
for row_index in range(2, 61): for row_index in range(2, 61):
row = rows[row_index] row = rows[row_index]
service_name = row[0].value service_name = row[0].value
question_key_base = mapping.SERVICES_MAPPING[service_name] if row[start_column].value and row[start_column].value.upper() == 'YES':
nren_service_data[nren_name] = { question_data = {"offered": ["yes"]}
'question_key_base': question_key_base, if row[start_column + 1].value:
'offered': row[start_column].value, question_data["name"] = row[start_column + 1].value
'service_name': row[start_column + 1].value, if row[start_column + 2].value:
'additional': row[start_column + 2].value question_data["additional_information"] = row[start_column + 2].value
}
with app.app_context(): question_key_base = mapping.SERVICES_MAPPING[service_name]
question_name, subquestion_name = question_key_base.split(':')
question_dict = nren_service_data[nren_name].setdefault(question_name, {})
question_dict[subquestion_name] = question_data
return nren_service_data
nren_names = set()
for nren in db.session.scalars(select(NREN)): def _cli(app):
nren_names.add(nren.name.upper())
for nren_name in nren_service_data.keys(): nren_service_data = load_service_data()
if nren_name not in nren_names:
raise Exception('NREN in excel not found in db!') with app.app_context():
# TODO also check if its right that we dont have ANAS data..
nren_surveys = {} nren_surveys = {}
...@@ -155,6 +158,10 @@ def _cli(app): ...@@ -155,6 +158,10 @@ def _cli(app):
survey_db_nren_id = mapping.NREN_IDS[nren.name] survey_db_nren_id = mapping.NREN_IDS[nren.name]
nren_surveys[nren] = query_nren(survey_db_nren_id) nren_surveys[nren] = query_nren(survey_db_nren_id)
for nren_name in nren_service_data.keys():
if nren_name not in [n.name.upper() for n in nren_surveys.keys()]:
raise Exception('NREN in excel not found in source dataset!')
db.session.execute(delete(SurveyResponse).where( db.session.execute(delete(SurveyResponse).where(
SurveyResponse.survey_year == 2022 SurveyResponse.survey_year == 2022
)) ))
...@@ -163,9 +170,9 @@ def _cli(app): ...@@ -163,9 +170,9 @@ def _cli(app):
for nren, answers in nren_surveys.items(): for nren, answers in nren_surveys.items():
survey_dict = convert_answers(answers) survey_dict = convert_answers(answers)
survey_dict["data"].update(nren_service_data.get(nren.name.upper(), {}))
survey_dict["page"] = 0 survey_dict["page"] = 0
survey_dict["verification_status"] = {} survey_dict["verification_status"] = {}
# TODO add service data to the dict
response = SurveyResponse( response = SurveyResponse(
nren=nren, nren=nren,
nren_id=nren.id, nren_id=nren.id,
......
...@@ -15,6 +15,10 @@ def mock_query_nren(_): ...@@ -15,6 +15,10 @@ def mock_query_nren(_):
return {16455: "answer1"} return {16455: "answer1"}
def mock_load_service_data():
return {}
def test_queries(app_with_survey_db, mocker): def test_queries(app_with_survey_db, mocker):
with app_with_survey_db.app_context(): with app_with_survey_db.app_context():
...@@ -24,6 +28,7 @@ def test_queries(app_with_survey_db, mocker): ...@@ -24,6 +28,7 @@ def test_queries(app_with_survey_db, mocker):
mocker.patch('compendium_v2.conversion.conversion.convert_answers', mock_convert_answers) mocker.patch('compendium_v2.conversion.conversion.convert_answers', mock_convert_answers)
mocker.patch('compendium_v2.conversion.conversion.query_nren', mock_query_nren) mocker.patch('compendium_v2.conversion.conversion.query_nren', mock_query_nren)
mocker.patch('compendium_v2.conversion.conversion.load_service_data', mock_load_service_data)
_cli(app_with_survey_db) _cli(app_with_survey_db)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment