JSON now is generated with proper structure
Browse files- jsonGenerator.py +190 -0
- sdc_view.py +26 -22
- session_state.json +1 -1
jsonGenerator.py
CHANGED
|
@@ -0,0 +1,190 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
def generate_json(form_state):
|
| 2 |
+
|
| 3 |
+
|
| 4 |
+
|
| 5 |
+
dataModel = {
|
| 6 |
+
"name": None,
|
| 7 |
+
"description": None,
|
| 8 |
+
"organizations": [],
|
| 9 |
+
"targetCommunities": [],
|
| 10 |
+
"bodies": [],
|
| 11 |
+
"governance": [],
|
| 12 |
+
"socialContexts":[],
|
| 13 |
+
"adaptations":[],
|
| 14 |
+
"participants":[],
|
| 15 |
+
"teams":[]
|
| 16 |
+
}
|
| 17 |
+
|
| 18 |
+
targetCommunities = {
|
| 19 |
+
"id": None,
|
| 20 |
+
"startingAgeRange": None,
|
| 21 |
+
"endingAgeRange": None,
|
| 22 |
+
"ethnicities": [],
|
| 23 |
+
"genders": [],
|
| 24 |
+
"spokenLanguages": [
|
| 25 |
+
{"language": None, "proficiency": None}
|
| 26 |
+
],
|
| 27 |
+
"socioEconomicStati": [],
|
| 28 |
+
"skillLevels": [],
|
| 29 |
+
"averageTenure": None
|
| 30 |
+
}
|
| 31 |
+
bodies = {
|
| 32 |
+
|
| 33 |
+
}
|
| 34 |
+
dataModel = {
|
| 35 |
+
"name": None,
|
| 36 |
+
"description": None,
|
| 37 |
+
"organizations": [],
|
| 38 |
+
"targetCommunities": [
|
| 39 |
+
{
|
| 40 |
+
"id": None,
|
| 41 |
+
"startingAgeRange": None,
|
| 42 |
+
"endingAgeRange": None,
|
| 43 |
+
"ethnicities": [],
|
| 44 |
+
"genders": [],
|
| 45 |
+
"spokenLanguages": [
|
| 46 |
+
{"language": None, "proficiency": None}
|
| 47 |
+
],
|
| 48 |
+
"socioEconomicStati": [],
|
| 49 |
+
"skillLevels": [],
|
| 50 |
+
"averageTenure": None
|
| 51 |
+
},
|
| 52 |
+
{
|
| 53 |
+
"id": None,
|
| 54 |
+
"startingAgeRange": None,
|
| 55 |
+
"endingAgeRange": None,
|
| 56 |
+
"ethnicities": [],
|
| 57 |
+
"genders": [],
|
| 58 |
+
"spokenLanguages": [
|
| 59 |
+
{"language": None, "proficiency": None}
|
| 60 |
+
],
|
| 61 |
+
"socioEconomicStati": [],
|
| 62 |
+
"skillLevels": [],
|
| 63 |
+
"averageTenure": None
|
| 64 |
+
}
|
| 65 |
+
],
|
| 66 |
+
"bodies": [
|
| 67 |
+
{
|
| 68 |
+
"id": None,
|
| 69 |
+
"description": None,
|
| 70 |
+
"type": None
|
| 71 |
+
},
|
| 72 |
+
{
|
| 73 |
+
"id": None,
|
| 74 |
+
"description": None,
|
| 75 |
+
"type": None
|
| 76 |
+
}
|
| 77 |
+
],
|
| 78 |
+
"governances": [
|
| 79 |
+
{
|
| 80 |
+
"id": None,
|
| 81 |
+
"projectType": None
|
| 82 |
+
}
|
| 83 |
+
],
|
| 84 |
+
"socialContexts": [],
|
| 85 |
+
"useCases": [],
|
| 86 |
+
"adaptations": [
|
| 87 |
+
{
|
| 88 |
+
"id": None,
|
| 89 |
+
"description": None,
|
| 90 |
+
"useCases": [],
|
| 91 |
+
"targetCommunities": [],
|
| 92 |
+
"relatedTeams": []
|
| 93 |
+
},
|
| 94 |
+
{
|
| 95 |
+
"id": None,
|
| 96 |
+
"description": None,
|
| 97 |
+
"useCases": [],
|
| 98 |
+
"targetCommunities": [],
|
| 99 |
+
"relatedTeams": []
|
| 100 |
+
}
|
| 101 |
+
],
|
| 102 |
+
"participants": [
|
| 103 |
+
{
|
| 104 |
+
"id": None,
|
| 105 |
+
"age": None,
|
| 106 |
+
"location": None,
|
| 107 |
+
"workplaceType": None,
|
| 108 |
+
"ethnicity": None,
|
| 109 |
+
"gender": None,
|
| 110 |
+
"disabilities": [],
|
| 111 |
+
"sexualOrientation": None,
|
| 112 |
+
"religion": None,
|
| 113 |
+
"country": None,
|
| 114 |
+
"spokenLanguages": [
|
| 115 |
+
{"language": None, "proficiency": None}
|
| 116 |
+
],
|
| 117 |
+
"socioEconomicStatus": None,
|
| 118 |
+
"skillLevel": None,
|
| 119 |
+
"tenure": None
|
| 120 |
+
}
|
| 121 |
+
],
|
| 122 |
+
"teams": [
|
| 123 |
+
{
|
| 124 |
+
"id": None,
|
| 125 |
+
"type": None,
|
| 126 |
+
"description": None,
|
| 127 |
+
"startingAgeRange": None,
|
| 128 |
+
"endingAgeRange": None,
|
| 129 |
+
"locations": [],
|
| 130 |
+
"workplaceType": None,
|
| 131 |
+
"ethnicities": [],
|
| 132 |
+
"genders": [],
|
| 133 |
+
"disabilities": [],
|
| 134 |
+
"sexualOrientations": [],
|
| 135 |
+
"religiousBeliefs": [],
|
| 136 |
+
"countries": [],
|
| 137 |
+
"educationalLevels": [],
|
| 138 |
+
"spokenLanguages": [
|
| 139 |
+
{"language": None, "proficiency": None}
|
| 140 |
+
],
|
| 141 |
+
"socioEconomicStati": [],
|
| 142 |
+
"skillLevels": [],
|
| 143 |
+
"averageTenure": None,
|
| 144 |
+
"startDate": None,
|
| 145 |
+
"endDate": None,
|
| 146 |
+
"teamSize": None,
|
| 147 |
+
"iterations": None,
|
| 148 |
+
"participants": []
|
| 149 |
+
},
|
| 150 |
+
{
|
| 151 |
+
"id": None,
|
| 152 |
+
"type": None,
|
| 153 |
+
"description": None,
|
| 154 |
+
"startingAgeRange": None,
|
| 155 |
+
"endingAgeRange": None,
|
| 156 |
+
"locations": [],
|
| 157 |
+
"workplaceType": None,
|
| 158 |
+
"ethnicities": [],
|
| 159 |
+
"genders": [],
|
| 160 |
+
"disabilities": [],
|
| 161 |
+
"sexualOrientations": [],
|
| 162 |
+
}
|
| 163 |
+
]
|
| 164 |
+
}
|
| 165 |
+
|
| 166 |
+
|
| 167 |
+
|
| 168 |
+
return dataModel
|
| 169 |
+
|
| 170 |
+
|
| 171 |
+
def unflatten(flat_dict):
|
| 172 |
+
nested = {}
|
| 173 |
+
for flat_key, value in flat_dict.items():
|
| 174 |
+
keys = flat_key.split('_')
|
| 175 |
+
current = nested
|
| 176 |
+
for i, key in enumerate(keys):
|
| 177 |
+
# For intermediate keys, ensure the container is a dict.
|
| 178 |
+
if i < len(keys) - 1:
|
| 179 |
+
if key in current:
|
| 180 |
+
# If current[key] exists but isn't a dict, replace it.
|
| 181 |
+
if not isinstance(current[key], dict):
|
| 182 |
+
current[key] = {}
|
| 183 |
+
else:
|
| 184 |
+
current[key] = {}
|
| 185 |
+
current = current[key]
|
| 186 |
+
else:
|
| 187 |
+
# Last key: assign the value.
|
| 188 |
+
current[key] = value
|
| 189 |
+
return nested
|
| 190 |
+
|
sdc_view.py
CHANGED
|
@@ -6,6 +6,7 @@ import datetime
|
|
| 6 |
import urllib.parse
|
| 7 |
import os
|
| 8 |
from markdownGenerator import *
|
|
|
|
| 9 |
|
| 10 |
|
| 11 |
|
|
@@ -256,10 +257,17 @@ def render_sdc():
|
|
| 256 |
##
|
| 257 |
col1, col2 = st.columns([8, 2])
|
| 258 |
with col1:
|
| 259 |
-
st.title("The Software Diversity Card :
|
| 260 |
with col2:
|
| 261 |
# Theme options
|
| 262 |
themes = {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 263 |
"Cool Blue": {
|
| 264 |
"primaryColor" : "#007ACC", # A vibrant, clear blue
|
| 265 |
"backgroundColor" : "#E6F7FF" , # A light, airy blue for a fresh feel
|
|
@@ -267,12 +275,6 @@ def render_sdc():
|
|
| 267 |
"textColor" : "#003366" , # Deep navy for contrast
|
| 268 |
"font" : "sans serif",
|
| 269 |
},
|
| 270 |
-
"Light": {
|
| 271 |
-
"primaryColor": "#4CAF50",
|
| 272 |
-
"backgroundColor": "#FFFFFF",
|
| 273 |
-
"secondaryBackgroundColor": "#F0F2F6",
|
| 274 |
-
"textColor": "#262730",
|
| 275 |
-
},
|
| 276 |
"Dark": {
|
| 277 |
"primaryColor": "#BB86FC",
|
| 278 |
"backgroundColor": "#121212",
|
|
@@ -333,11 +335,11 @@ def render_sdc():
|
|
| 333 |
])
|
| 334 |
|
| 335 |
with governance:
|
| 336 |
-
col1, col2 = st.columns([
|
| 337 |
-
with
|
| 338 |
#cached_text_input("Project Type", "governance_projectType", "Specify the type of software project (private, public funded, non-profit, driven by an open-source community, etc.)")
|
| 339 |
cached_multiple_radio("governance_projectType",["public funded", "research", "private", "private non-profit", "driven by open-source community", "citizen science"],"Specify the type of software project")
|
| 340 |
-
with
|
| 341 |
# Multiple value
|
| 342 |
key = "governance_govProcesses"
|
| 343 |
init_state(key)
|
|
@@ -346,15 +348,15 @@ def render_sdc():
|
|
| 346 |
if st.button("Add governament processes"):
|
| 347 |
add_text_area(key)
|
| 348 |
# Loop over the array and create a text area with a remove button for each element
|
| 349 |
-
|
| 350 |
-
|
| 351 |
-
|
| 352 |
-
|
| 353 |
-
|
| 354 |
-
|
| 355 |
-
|
| 356 |
-
|
| 357 |
-
|
| 358 |
|
| 359 |
# BODIES
|
| 360 |
st.write("Add the different types of governament bodies of your software project (boards and funders)")
|
|
@@ -367,16 +369,17 @@ def render_sdc():
|
|
| 367 |
for idx, text in enumerate(st.session_state[key]):
|
| 368 |
# Create two columns: one for the text area, one for the remove button
|
| 369 |
with st.container(border=True):
|
| 370 |
-
col1, col2 = st.columns([
|
| 371 |
with col1:
|
| 372 |
cached_text_input("Body name", f"{key}_{idx}_name", "The name of id of the body")
|
| 373 |
cached_text_area("Body description", f"{key}_{idx}_description", "A description of the body")
|
| 374 |
|
| 375 |
|
| 376 |
with col2:
|
|
|
|
| 377 |
if st.button("Remove", key=f"{key}_remove_{idx}"):
|
| 378 |
remove_text_area(idx,f"{key}_remove_{idx}")
|
| 379 |
-
|
| 380 |
|
| 381 |
with st.expander("If needed provide detailed information about the organizations or individuals involved in the governance", expanded=False):
|
| 382 |
# Button to add a new text area
|
|
@@ -465,6 +468,7 @@ def render_sdc():
|
|
| 465 |
)
|
| 466 |
# Display the session state as pretty JSON
|
| 467 |
#st.json(serialize_session_state())
|
|
|
|
| 468 |
st.text("Preview:")
|
| 469 |
-
st.json(
|
| 470 |
|
|
|
|
| 6 |
import urllib.parse
|
| 7 |
import os
|
| 8 |
from markdownGenerator import *
|
| 9 |
+
from jsonGenerator import *
|
| 10 |
|
| 11 |
|
| 12 |
|
|
|
|
| 257 |
##
|
| 258 |
col1, col2 = st.columns([8, 2])
|
| 259 |
with col1:
|
| 260 |
+
st.title("The Software Diversity Card Generator :busts_in_silhouette: ")
|
| 261 |
with col2:
|
| 262 |
# Theme options
|
| 263 |
themes = {
|
| 264 |
+
|
| 265 |
+
"Light": {
|
| 266 |
+
"primaryColor": "#4CAF50",
|
| 267 |
+
"backgroundColor": "#FFFFFF",
|
| 268 |
+
"secondaryBackgroundColor": "#F0F2F6",
|
| 269 |
+
"textColor": "#262730",
|
| 270 |
+
},
|
| 271 |
"Cool Blue": {
|
| 272 |
"primaryColor" : "#007ACC", # A vibrant, clear blue
|
| 273 |
"backgroundColor" : "#E6F7FF" , # A light, airy blue for a fresh feel
|
|
|
|
| 275 |
"textColor" : "#003366" , # Deep navy for contrast
|
| 276 |
"font" : "sans serif",
|
| 277 |
},
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 278 |
"Dark": {
|
| 279 |
"primaryColor": "#BB86FC",
|
| 280 |
"backgroundColor": "#121212",
|
|
|
|
| 335 |
])
|
| 336 |
|
| 337 |
with governance:
|
| 338 |
+
col1, col2 = st.columns([3, 2])
|
| 339 |
+
with col2:
|
| 340 |
#cached_text_input("Project Type", "governance_projectType", "Specify the type of software project (private, public funded, non-profit, driven by an open-source community, etc.)")
|
| 341 |
cached_multiple_radio("governance_projectType",["public funded", "research", "private", "private non-profit", "driven by open-source community", "citizen science"],"Specify the type of software project")
|
| 342 |
+
with col1:
|
| 343 |
# Multiple value
|
| 344 |
key = "governance_govProcesses"
|
| 345 |
init_state(key)
|
|
|
|
| 348 |
if st.button("Add governament processes"):
|
| 349 |
add_text_area(key)
|
| 350 |
# Loop over the array and create a text area with a remove button for each element
|
| 351 |
+
for idx, processes in enumerate(st.session_state[key]):
|
| 352 |
+
# Create two columns: one for the text area, one for the remove button
|
| 353 |
+
col1, col2 = st.columns([6, 1])
|
| 354 |
+
with col1:
|
| 355 |
+
cached_text_area(f"Governament process {idx + 1}", f"governance_govProcesses_{idx}", "Specific the governance rules of the software project. For instance, the funders, or the role and the relation between the different bodies that governs the software.")
|
| 356 |
+
with col2:
|
| 357 |
+
# print(st.session_state['governance_govProcesses_remove_0'])
|
| 358 |
+
if st.button("Remove", key=f"remove_{key}_{idx}"):
|
| 359 |
+
remove_text_area(idx,key)
|
| 360 |
|
| 361 |
# BODIES
|
| 362 |
st.write("Add the different types of governament bodies of your software project (boards and funders)")
|
|
|
|
| 369 |
for idx, text in enumerate(st.session_state[key]):
|
| 370 |
# Create two columns: one for the text area, one for the remove button
|
| 371 |
with st.container(border=True):
|
| 372 |
+
col1, col2 = st.columns([3, 2])
|
| 373 |
with col1:
|
| 374 |
cached_text_input("Body name", f"{key}_{idx}_name", "The name of id of the body")
|
| 375 |
cached_text_area("Body description", f"{key}_{idx}_description", "A description of the body")
|
| 376 |
|
| 377 |
|
| 378 |
with col2:
|
| 379 |
+
cached_multiple_radio(f"{key}_{idx}_type", ['funders', 'directors', 'administrators', 'other'], f"Body role type" )
|
| 380 |
if st.button("Remove", key=f"{key}_remove_{idx}"):
|
| 381 |
remove_text_area(idx,f"{key}_remove_{idx}")
|
| 382 |
+
|
| 383 |
|
| 384 |
with st.expander("If needed provide detailed information about the organizations or individuals involved in the governance", expanded=False):
|
| 385 |
# Button to add a new text area
|
|
|
|
| 468 |
)
|
| 469 |
# Display the session state as pretty JSON
|
| 470 |
#st.json(serialize_session_state())
|
| 471 |
+
final = unflatten(st.session_state["form_data"])
|
| 472 |
st.text("Preview:")
|
| 473 |
+
st.json(final)
|
| 474 |
|
session_state.json
CHANGED
|
@@ -1 +1 @@
|
|
| 1 |
-
{"master_title": "Besser", "master_desc": "The BESSER low-code platform is built on top of B-UML our Python-based personal interpretation of a 'Universal Modeling Language' (yes, heavily inspired and a simplified version of the better known UML, the Unified Modeling Language) ", "socialContext_description": "Besser is inteded to be used by a broad community of app developers without the need of having coding skills.", "socialContext_targetCommunity_name": "Teacher and student of computer science", "socialContext_targetCommunity_description": "Teacher and student of computer science", "socialContext_targetCommunity_age": [17, 120], "socialContext_targetCommunity_location": "University and education places", "socialContext_targetCommunity_workplace": "Hybrid", "socialContext_targetCommunity_ethnicities": "", "socialContext_targetCommunity_genders": "", "socialContext_targetCommunity_disabilities": "", "socialContext_targetCommunity_religious": "", "socialContext_adaptation_name": "Computer Science Teachers", "socialContext_adaptation_description": "The software have been adapted for its specific use in educational environments", "participants_0_name": "Development Team", "participants_0_description": "The team in charge of developing the software", "participants_0_size": 15, "participants_0_age": [25, 36], "participants_0_location": "Luxembourg Institute of Technoogy", "participants_0_workplace": "Presential", "participants_0_ethnicities": "Colombian,Brasilian, Argentinian, French ,Spanish, Pakistani, Serbian, Iranian, Morroco, Italian", "participants_0_genders": "80% male, 20% famela", "participants_0_disabilities": "Non", "participants_0_religious": "Christianism, Islam", "governance_projectType": ["public funded"], "
|
|
|
|
| 1 |
+
{"master_title": "Besser", "master_desc": "The BESSER low-code platform is built on top of B-UML our Python-based personal interpretation of a 'Universal Modeling Language' (yes, heavily inspired and a simplified version of the better known UML, the Unified Modeling Language) ", "socialContext_description": "Besser is inteded to be used by a broad community of app developers without the need of having coding skills.", "socialContext_targetCommunity_name": "Teacher and student of computer science", "socialContext_targetCommunity_description": "Teacher and student of computer science", "socialContext_targetCommunity_age": [17, 120], "socialContext_targetCommunity_location": "University and education places", "socialContext_targetCommunity_workplace": "Hybrid", "socialContext_targetCommunity_ethnicities": "", "socialContext_targetCommunity_genders": "", "socialContext_targetCommunity_disabilities": "", "socialContext_targetCommunity_religious": "", "socialContext_adaptation_name": "Computer Science Teachers", "socialContext_adaptation_description": "The software have been adapted for its specific use in educational environments", "participants_0_name": "Development Team", "participants_0_description": "The team in charge of developing the software", "participants_0_size": 15, "participants_0_age": [25, 36], "participants_0_location": "Luxembourg Institute of Technoogy", "participants_0_workplace": "Presential", "participants_0_ethnicities": "Colombian,Brasilian, Argentinian, French ,Spanish, Pakistani, Serbian, Iranian, Morroco, Italian", "participants_0_genders": "80% male, 20% famela", "participants_0_disabilities": "Non", "participants_0_religious": "Christianism, Islam", "governance_projectType": ["public funded"], "governance_govProcesses_0": "Besser is funded by the Luxembourg\u2019s National Research Fund (FNR) is the country\u2019s main agency for funding research across all scientific fields.", "governance_govProcesses_1": "The project is led by the recipient of the funds, its principal investigator.", "governance_bodies_0_name": "Luxembourg\u2019s National Research Fund (FNR)", "governance_bodies_0_description": "Luxembourg\u2019s National Research Fund (FNR) is the country\u2019s main agency for funding research across all scientific fields.", "governance_bodies_0_participant_name": "", "governance_bodies_0_participant_location": "", "governance_bodies_0_participant_workdplace": "Presential", "governance_bodies_0_participant_ethincity": "", "governance_bodies_0_participant_gender": "", "governance_bodies_0_participant_disabilities": "", "governance_bodies_0_participant_sexualOrientation": "", "governance_bodies_0_participant_religion": "", "governance_bodies_0_organization_name": "", "governance_bodies_0_organization_age": [10, 20], "governance_bodies_0_organization_location": "", "governance_bodies_0_organization_workplace": "Presential", "governance_bodies_0_organization_ethnicities": "", "governance_bodies_0_organization_genders": "", "governance_bodies_0_organization_disabilities": "", "governance_bodies_0_organization_religious": "", "governance_bodies_0_type": ["funders"], "governance_bodies_1_name": "Principal Investigator", "governance_bodies_1_description": "The PI who lead the project ", "governance_bodies_1_participant_name": "Jordi Cabot", "governance_bodies_1_participant_location": "Luxembourg Institute of Science and Technology", "governance_bodies_1_participant_workdplace": "Presential", "governance_bodies_1_participant_ethincity": "White", "governance_bodies_1_participant_gender": "Male", "governance_bodies_1_participant_disabilities": "None", "governance_bodies_1_participant_sexualOrientation": "Non-disclosed", "governance_bodies_1_participant_religion": "Non-disclosed", "governance_bodies_1_organization_name": "", "governance_bodies_1_organization_age": [10, 20], "governance_bodies_1_organization_location": "", "governance_bodies_1_organization_workplace": "Presential", "governance_bodies_1_organization_ethnicities": "", "governance_bodies_1_organization_genders": "", "governance_bodies_1_organization_disabilities": "", "governance_bodies_1_organization_religious": "", "governance_bodies_1_type": ["directors"], "governance_bodies_1_participant": 25.0, "governance_bodies_1_participant_countries": [], "governance_bodies_1_participant_edlevel": [], "governance_bodies_1_participant_sociostati": [], "governance_bodies_1_participant_skills": ["expert"], "governance_bodies_1_participant_languages": [], "socialContext_countries": ["Luxembourg", "France", "Germany", "Spain"], "socialContext_targetCommunity_countries": ["Luxembourg", "France"], "socialContext_targetCommunity_skills": ["beginner", "competent"], "participants_0_type": ["Tester Team"], "participants_0_countries": [], "participants_0_edlevel": [], "participants_0_skills": [], "participants_1_name": "Usability test team", "participants_1_description": "Tester are student of the computer science degree at the Luxembourg University. Using the backend generator from scratch with the documentation of BESSER (with a given PlantUML, library model)\n Using ChatGPT4o only giving the PlantUML model and no hand coding", "participants_1_size": 22, "participants_1_age": [20, 22], "participants_1_location": "University of Luxembourg", "participants_1_workplace": "Presential", "participants_1_ethnicities": "French", "participants_1_genders": "", "participants_1_disabilities": "", "participants_1_religious": "", "participants_1_type": ["Tester Team"], "participants_1_countries": [], "participants_1_edlevel": [], "participants_1_skills": [], "governance_bodies_1_organization": 25.0, "socialContext_targetCommunity_languages": ["French", "Luxembourgish-Letzeburgesch", "English"], "participants_0_languages": [], "participants_1_languages": [], "governance_bodies_2_name": "", "governance_bodies_2_description": "", "governance_bodies_2_participant_name": "", "governance_bodies_2_participant_location": "", "governance_bodies_2_participant_workdplace": "Presential", "governance_bodies_2_participant_ethincity": "", "governance_bodies_2_participant_gender": "", "governance_bodies_2_participant_disabilities": "", "governance_bodies_2_participant_sexualOrientation": "", "governance_bodies_2_participant_religion": "", "governance_bodies_2_organization_name": "", "governance_bodies_2_organization_age": [10, 20], "governance_bodies_2_organization_location": "", "governance_bodies_2_organization_workplace": "Presential", "governance_bodies_2_organization_ethnicities": "", "governance_bodies_2_organization_genders": "", "governance_bodies_2_organization_disabilities": "", "governance_bodies_2_organization_religious": ""}
|