import json from datetime import datetime from . import os, st from .BasePage import BasePage from APIModules.ObjectModels.Task import Task class ConfigPage(BasePage): def render(self): super().render(keys={"WATSON_API_KEY": os.getenv("WATSON_API_KEY")}) initial_state_from_json : dict = st.session_state.get("INITIAL_STATE", {}) if st.button("use_preloaded_state"): with open("initial_state.json") as f: initial_state_from_json : dict = json.load(f) st.session_state.INITIAL_STATE = initial_state_from_json st.rerun() initial_team_members = st.session_state.get('team') if not initial_team_members:st.session_state.team = initial_state_from_json.get('team', ["Alessio", "Joy", "Nicola C", "Nicola D", "Dragosh"]) initial_tasks = st.session_state.get('tasks') if not initial_tasks:st.session_state.tasks = [Task(**task).model_dump() for task in initial_state_from_json.get('tasks', [])] initial_assignments = st.session_state.get('assignments') if not initial_tasks:st.session_state.assignments = initial_state_from_json.get('assignments', {}) with st.expander("Set Team", expanded=True): st.header("Configurazione") new_member = st.text_input("Enter team name", value="Team name") if st.button("Add team member"): st.session_state.team.append(new_member) with st.expander("Tasks", expanded=True): st.header("Task") new_task_name = st.text_input("Enter task name", value="Task name") new_task_description = st.text_area("Enter task description", value="Task description") new_task_start_date = st.date_input("Enter task start date", value=datetime.today()) new_task_end_date = st.date_input("Enter task end date", value=datetime.today()) if st.button("Add Task"): new_task = Task( name=new_task_name, description=new_task_description, start_date=new_task_start_date, end_date=new_task_end_date ) st.session_state.tasks.append(new_task.model_dump()) with st.expander("Assing Tasks", expanded=True): st.header("Assing Tasks") cols = st.columns(2) with cols[0]:_team_member = st.selectbox("Team Member", st.session_state.team) _tasks_to_assing = st.multiselect("Task", [task['name'] for task in st.session_state.tasks]) task_indices = [i for i, task in enumerate(st.session_state.tasks) if task['name'] in _tasks_to_assing] tasks_selected = [task["name"] for i, task in enumerate(st.session_state.tasks) if i in task_indices] if st.button("Assing Task"): st.session_state.assignments[_team_member] = tasks_selected