PM-AI / APIModules /APIs /ConfigPage.py
Alessio-Chiovelli's picture
Upload 7 files
bc1d804 verified
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