|
import streamlit as st |
|
import pronotepy |
|
from datetime import datetime, timedelta |
|
|
|
|
|
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': '🎵' |
|
} |
|
|
|
|
|
def get_emoji(subject_name): |
|
return subject_emojis.get(subject_name, '📚') |
|
|
|
def app(client): |
|
st.title("📅 Emploi du temps") |
|
|
|
|
|
selected_week = st.date_input("✨ Sélectionnez une semaine", value=datetime.today()) |
|
start_of_week = selected_week - timedelta(days=selected_week.weekday()) |
|
week_dates = [start_of_week + timedelta(days=i) for i in range(5)] |
|
|
|
|
|
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()) |
|
|
|
|
|
timetable = client.lessons(date_for_pronote, date_for_pronote + timedelta(days=1)) |
|
|
|
|
|
sorted_timetable = sorted(timetable, key=lambda lesson: lesson.start) |
|
|
|
if sorted_timetable: |
|
|
|
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: |
|
|
|
if st.button(f"📜 Afficher le contenu pour {lesson.subject.name}", key=lesson.id): |
|
|
|
st.session_state['selected_content'] = lesson.content |
|
st.session_state.current_page = 'contenu' |
|
st.rerun() |
|
else: |
|
st.write("🔴 Aucun cours pour cette journée.") |