File size: 2,383 Bytes
a01c266 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
import streamlit as st
import datetime
import pronotepy
import uuid
def app(client):
st.title('📚 Devoirs')
# Sélection de la semaine
selected_week = st.date_input("Sélectionnez une semaine", value=datetime.date.today())
start_week = selected_week - datetime.timedelta(days=selected_week.weekday())
end_week = start_week + datetime.timedelta(days=4) # Fin de la semaine au vendredi
# Récupération des devoirs pour la semaine sélectionnée
homeworks = client.homework(start_week, end_week)
# Création des onglets par jour de la semaine + À faire et Déjà fait
tabs = st.tabs(["🔴 À faire durant la semaine", "1️⃣ Lundi", "2️⃣ Mardi", "3️⃣ Mercredi", "4️⃣ Jeudi", "5️⃣ Vendredi", "🟢 Déjà fait durant la semaine"])
days = [start_week + datetime.timedelta(days=i) for i in range(5)]
with tabs[0]: # À faire durant la semaine
homeworks_to_do = [hw for hw in homeworks if not hw.done]
display_homework_list(homeworks_to_do, client)
with tabs[6]: # Déjà fait durant la semaine
homeworks_done = [hw for hw in homeworks if hw.done]
display_homework_list(homeworks_done, client)
for i, tab in enumerate(tabs[1:5]): # Boucle sur les jours de la semaine
with tab:
daily_homeworks = [hw for hw in homeworks if hw.date == days[i]]
display_homework_list(daily_homeworks, client)
def display_homework_list(homeworks, client):
for homework in homeworks:
with st.expander(f"{"✅" if homework.done else "❌"} | {homework.subject.name} - *pour le {homework.date.strftime('%d/%m/%Y')}*"):
st.markdown(f"""
- **Statut :** {"✅ Fait" if homework.done else "❌ À faire"}
- **Description :** {homework.description}
""", unsafe_allow_html=True)
# Generate a unique key for each button using uuid
unique_key = str(uuid.uuid4()) # Generate a unique key
# Use the unique key for the button to avoid DuplicateWidgetID error
st.button("✅ Marquer comme fait" if not homework.done else "❌ Marquer comme à faire", key=unique_key, on_click=update_homework_status, args=(homework, client))
def update_homework_status(homework, client):
new_status = not homework.done
homework.set_done(new_status) |