JoanGiner's picture
JSON now is generated with proper structure
7ccb6a3
def generate_json(form_state):
dataModel = {
"name": None,
"description": None,
"organizations": [],
"targetCommunities": [],
"bodies": [],
"governance": [],
"socialContexts":[],
"adaptations":[],
"participants":[],
"teams":[]
}
targetCommunities = {
"id": None,
"startingAgeRange": None,
"endingAgeRange": None,
"ethnicities": [],
"genders": [],
"spokenLanguages": [
{"language": None, "proficiency": None}
],
"socioEconomicStati": [],
"skillLevels": [],
"averageTenure": None
}
bodies = {
}
dataModel = {
"name": None,
"description": None,
"organizations": [],
"targetCommunities": [
{
"id": None,
"startingAgeRange": None,
"endingAgeRange": None,
"ethnicities": [],
"genders": [],
"spokenLanguages": [
{"language": None, "proficiency": None}
],
"socioEconomicStati": [],
"skillLevels": [],
"averageTenure": None
},
{
"id": None,
"startingAgeRange": None,
"endingAgeRange": None,
"ethnicities": [],
"genders": [],
"spokenLanguages": [
{"language": None, "proficiency": None}
],
"socioEconomicStati": [],
"skillLevels": [],
"averageTenure": None
}
],
"bodies": [
{
"id": None,
"description": None,
"type": None
},
{
"id": None,
"description": None,
"type": None
}
],
"governances": [
{
"id": None,
"projectType": None
}
],
"socialContexts": [],
"useCases": [],
"adaptations": [
{
"id": None,
"description": None,
"useCases": [],
"targetCommunities": [],
"relatedTeams": []
},
{
"id": None,
"description": None,
"useCases": [],
"targetCommunities": [],
"relatedTeams": []
}
],
"participants": [
{
"id": None,
"age": None,
"location": None,
"workplaceType": None,
"ethnicity": None,
"gender": None,
"disabilities": [],
"sexualOrientation": None,
"religion": None,
"country": None,
"spokenLanguages": [
{"language": None, "proficiency": None}
],
"socioEconomicStatus": None,
"skillLevel": None,
"tenure": None
}
],
"teams": [
{
"id": None,
"type": None,
"description": None,
"startingAgeRange": None,
"endingAgeRange": None,
"locations": [],
"workplaceType": None,
"ethnicities": [],
"genders": [],
"disabilities": [],
"sexualOrientations": [],
"religiousBeliefs": [],
"countries": [],
"educationalLevels": [],
"spokenLanguages": [
{"language": None, "proficiency": None}
],
"socioEconomicStati": [],
"skillLevels": [],
"averageTenure": None,
"startDate": None,
"endDate": None,
"teamSize": None,
"iterations": None,
"participants": []
},
{
"id": None,
"type": None,
"description": None,
"startingAgeRange": None,
"endingAgeRange": None,
"locations": [],
"workplaceType": None,
"ethnicities": [],
"genders": [],
"disabilities": [],
"sexualOrientations": [],
}
]
}
return dataModel
def unflatten(flat_dict):
nested = {}
for flat_key, value in flat_dict.items():
keys = flat_key.split('_')
current = nested
for i, key in enumerate(keys):
# For intermediate keys, ensure the container is a dict.
if i < len(keys) - 1:
if key in current:
# If current[key] exists but isn't a dict, replace it.
if not isinstance(current[key], dict):
current[key] = {}
else:
current[key] = {}
current = current[key]
else:
# Last key: assign the value.
current[key] = value
return nested