import streamlit as st import pronotepy from datetime import datetime, timedelta # A simple mapping of subjects to emojis. Add more subjects and emojis as needed. subject_emojis = { 'ANGLAIS LV SECTION': '🇬🇧', 'FRANCAIS': '🇫🇷', 'EPS': '🏃‍♂️', 'Sport': '🏃‍♂️', 'Histoire/Géographie': '🌍', 'HIST/GEO': '🌍', 'Mathématiques': '🔢', 'MATHS': '🔢', 'PH-CHIMIE': '🧪', 'Physique-Chimie': '🧪', 'ANGLAIS LV1': '🇬🇧', 'ESPAGNOL LV2': '🇪🇸', 'SVT': '🌿', 'Technologie': '🔧', 'TECHNO': '🔧', 'TECHNOLOGIE': '🔧', 'Arts Plastiques': '🎨', 'ARTS PLASTIQUES': '🎨', 'Musique': '🎵', 'MUSIQUE': '🎵', 'ED MUSICALE': '🎵' } # A function to get emoji by subject def get_emoji(subject_name): return subject_emojis.get(subject_name, '📚') # Return a default book emoji if subject not found def app(client): st.title("📅 Emploi du temps") # Sélection de la semaine selected_week = st.date_input("✨ Sélectionnez une semaine", value=datetime.today()) start_of_week = selected_week - timedelta(days=selected_week.weekday()) # Adjust for selected week week_dates = [start_of_week + timedelta(days=i) for i in range(5)] # List of dates for the selected workweek # Create tabs for each day of the week in French tabs = st.tabs(["1️⃣ Lundi", "2️⃣ Mardi", "3️⃣ Mercredi", "4️⃣ Jeudi", "5️⃣ Vendredi"]) for i, tab in enumerate(tabs): with tab: date_for_pronote = datetime.combine(week_dates[i], datetime.min.time()) # Récupération de l'emploi du temps pour la journée sélectionnée timetable = client.lessons(date_for_pronote, date_for_pronote + timedelta(days=1)) # Tri des cours du plus tôt au plus tard sorted_timetable = sorted(timetable, key=lambda lesson: lesson.start) if sorted_timetable: # Affichage de l'emploi du temps avec emojis et bouton pour chaque leçon ayant un contenu for lesson in sorted_timetable: emoji = get_emoji(lesson.subject.name) with st.expander(f"{emoji} {lesson.status if lesson.status else ""} {lesson.subject.name} ({lesson.start.strftime('%H:%M')} - {lesson.end.strftime('%H:%M')})"): st.write(f"🎭 **Salle :** {lesson.classroom}") st.write(f"🧑‍🏫 **Professeur :** {lesson.teacher_name}") if lesson.status: st.write(f"🔦 **Statut :** {lesson.status}") if lesson.content: # Bouton pour afficher le contenu de la leçon dans une nouvelle page if st.button(f"📜 Afficher le contenu pour {lesson.subject.name}", key=lesson.id): # Utilisation du session state de Streamlit pour stocker l'objet contenu st.session_state['selected_content'] = lesson.content st.session_state.current_page = 'contenu' st.rerun() else: st.write("🔴 Aucun cours pour cette journée.")