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

map the service matrix question

parent a75cf469
No related branches found
No related tags found
1 merge request!47Feature/comp 218 migrating 2022 data
......@@ -21,7 +21,7 @@ from compendium_v2.survey_db import model as survey_model
from compendium_v2.db.model import NREN
from compendium_v2.db.survey_model import Survey, SurveyResponse
from compendium_v2.conversion.mapping import id_to_name
from compendium_v2.conversion.mapping import id_to_name, id_to_name_services, service_user_types_to_code
setup_logging()
......@@ -121,15 +121,15 @@ def convert_answers(answers):
if not id in answers:
continue
if '{' in question_name:
continue
answer = answers[id]
if len(answer) > 1 and answer[0] == '"' and answer[-1] == '"':
answer = answer[1:-1]
if len(answer) > 1 and answer[0] == '[' and answer[-1] == ']':
answer = json.loads(answer)
# TODO mapping of the answers to the codes for a lot of questions
# code to convert my description in the mapping to a json structure
question_names = question_name.split(":")
subdict = data
for name in question_names[0:-1]:
......@@ -137,7 +137,7 @@ def convert_answers(answers):
index = name[-2]
if index == "[":
subdict = subdict.setdefault(name[:-2], [])
break # special case where json list is mapped to a list of dicts
break # special case where json list is mapped to a list of dicts (part 1)
sublist = subdict.setdefault(name[:-3], [])
index = int(index)
while len(sublist) <= index:
......@@ -146,15 +146,35 @@ def convert_answers(answers):
else:
subdict = subdict.setdefault(name, {})
# print(question_names, answer)
if type(subdict) == list: # special case where json list is mapped to a list of dicts
if type(subdict) == list: # special case where json list is mapped to a list of dicts (part 2)
for answer_entry in answer:
subdict.append({question_names[-1]: answer_entry})
elif question_names[-1] == "available": # special case because we changed the policies questions a bit
if answer == "Yes":
subdict[question_names[-1]] = ["yes"]
else:
subdict[question_names[-1]] = answer
for id, question_name in id_to_name_services.items():
if not id in answers:
continue
answer = answers[id]
answer = json.loads(answer)
for user_type in answer:
user_type_code = service_user_types_to_code[user_type]
formatted_question_name = question_name.format(user_type_code)
question_names = formatted_question_name.split(":")
subdict = data
for name in question_names[0:-2]:
subdict = subdict.setdefault(name, {})
sublist = subdict.setdefault(question_names[-2], [])
sublist.append(question_names[-1])
return {"data": data}
def _cli(app):
......
......@@ -4,9 +4,35 @@
# NB in the comments i describe the source data
# query to get the data required to make this mapping:
# select a.value, q.id, q.title, q.cell_column, q.cell_row, q.identifier, q2.identifier, q2.column_headers, q2.row_headers from answers a join questions q on a.question_id = q.id left join questions q2 on q.parent_id = q2.id where a.value <> '""' and q.section_id > 225 order by q.id, a.id;
# select a.value, q.id, q.title, q.cell_column, q.cell_row, q.identifier,
# q2.identifier, q2.column_headers, q2.row_headers
# from answers a join questions q on a.question_id = q.id
# left join questions q2 on q.parent_id = q2.id
# where a.value <> '""' and q.section_id > 225 order by q.id, a.id;
service_user_types_to_code = {
"Universities": "universities",
"Further education": "further_education",
"Research institutes": "institutes",
"Primary Schools": "primary_schools",
"Government": "government",
"For profit organisations": "for_profit_orgs",
"International Research Organisations": "iros",
"Cultural Institutions": "cultural",
"(Non-research) hospitals": "hospitals",
"Secondary Schools": "secondary_schools"
}
id_to_name_services = {
16488: "service_matrix:{}:service_types:identity", # json list with double quotes
16489: "service_matrix:{}:service_types:network_services", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16490: "service_matrix:{}:service_types:collaboration", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16491: "service_matrix:{}:service_types:security", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16492: "service_matrix:{}:service_types:isp_support", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16493: "service_matrix:{}:service_types:storage_and_hosting", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16494: "service_matrix:{}:service_types:multimedia", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16495: "service_matrix:{}:service_types:professional_services", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
}
id_to_name = {
16402: "budget",
......@@ -51,7 +77,7 @@ id_to_name = {
16463: "phone_number",
16464: "email_address",
16465: "website",
16466: "organization_comments", # but should we map comments or not?
# 16466: "organization_comments",
16468: "corporate_strategy", # "Yes" "No"
16469: "corporate_strategy_url",
......@@ -72,14 +98,6 @@ id_to_name = {
16484: "formal_service_management_framework", # "Yes" "No"
16485: "service_level_targets", # "Yes" "No"
16486: "service_portfolio_changes", # "Yes" "No"
16488: "service_matrix{keys}:service_types['identity']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16489: "service_matrix{keys}:service_types['network_services']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16490: "service_matrix{keys}:service_types['collaboration']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16491: "service_matrix{keys}:service_types['security']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16492: "service_matrix{keys}:service_types['isp_support']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16493: "service_matrix{keys}:service_types['storage_and_hosting']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16494: "service_matrix{keys}:service_types['multimedia']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16495: "service_matrix{keys}:service_types['professional_services']", # json list with double quotes ["Universities","Further education","Research institutes","Primary Schools","Government","For profit organisations","International Research Organisations","Cultural Institutions","(Non-research) hospitals","Secondary Schools"]
16496: "service_portfolio_eosc_portal", # "Yes" "No"
16497: "services_on_eosc_portal_list[]:service_name", # json list with double quotes
16499: "audits", # "Yes" "No"
......@@ -88,7 +106,7 @@ id_to_name = {
16502: "business_continuity_plans_specifics",
16503: "security_controls", # json list with double quotes ["Anti Virus","Anti-Spam","Firewall","DDoS mitigation","Network monitoring","IPS/IDS","ACL","Network segmentation","Integrity checking","Other"]
16504: "security_controls-Comment",
16505: "policy_comments", # but should we map comments or not?
# 16505: "policy_comments",
16760: "policies:gender_equality_policy:available", # "Yes" "No"
16761: "policies:gender_equality_policy:url",
16762: "crisis_management_procedure", # "Yes" "No"
......@@ -236,7 +254,7 @@ id_to_name = {
16656: "remote_campuses", # "Yes" "No"
16658: "remote_campuses_specifics[0]:connected", # NB free text, doesnt map properly
16659: "remote_campuses_specifics[0]:country", # NB free text, doesnt map properly
16660: "connected_users_comments", # but should we map comments or not?
# 16660: "connected_users_comments",
16662: "dark_fibre_lease", # "Yes" "No"
16663: "dark_fibre_lease_kilometers_inside_country",
......@@ -328,7 +346,7 @@ id_to_name = {
16755: "nfv_types", # json list with double quotes ["Routers/switches","Firewalls","Load balancers","VPN Concentrator Services","Other"]
16756: "nfv_types-Comment",
16757: "network_automation", # "Yes" "No" "Planned"
16758: "network_automation_tasks", # json list with double quotes ["Device Provisioning","Data Collection","Configuration Management","Compliance","Reporting","Troubleshooting"]
16759: "network_comments"
16758: "network_automation_tasks" # json list with double quotes ["Device Provisioning","Data Collection","Configuration Management","Compliance","Reporting","Troubleshooting"]
# 16759: "network_comments"
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment