File size: 4,727 Bytes
a01c266
 
 
 
 
 
2f5902a
a01c266
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
56d4054
 
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import streamlit as st
import pronotepy
from pronotepy import ENTLoginError
from pronotepy.ent import *

# Importez vos pages ici
from pages import accueil, devoirs, notes, edt, contenu, info, vie_scolaire, conv

def main():
    # Configuration initiale de la page
    st.set_page_config(page_title="Application Pronote", initial_sidebar_state="collapsed", layout="centered")

    # Initialiser 'current_page' dans st.session_state
    if 'current_page' not in st.session_state:
        st.session_state.current_page = 'accueil'

    # Définition des options du menu déroulant
    colleges = {
        'Autre': ('', ''),
        'Louise Weiss': ('https://0952236p.index-education.net/pronote/eleve.html', 'val_doise'),
    }

    cas_options = [
        'Aucune', 'ac_orleans_tours', 'ac_poitiers', 'ac_reunion', 'ac_reims',
        'ac_rennes', 'atrium_sud', 'cas_agora06', 'cas_arsene76_edu', 'cas_cybercolleges42_edu',
        'cas_kosmos', 'cas_seinesaintdenis_edu', 'eclat_bfc', 'ecollege_haute_garonne_edu',
        'ent_94', 'ent_auvergnerhonealpe', 'ent_creuse', 'ent_creuse_educonnect', 'ent_elyco',
        'ent_essonne', 'ent_hdf', 'ent_mayotte', 'ent_somme', 'ent_var', 'ent77',
        'ent_ecollege78', 'extranet_colleges_somme', 'ile_de_france', 'laclasse_educonnect',
        'laclasse_lyon', 'l_normandie', 'lyceeconnecte_aquitaine', 'lyceeconnecte_edu',
        'monbureaunumerique', 'neoconnect_guadeloupe', 'occitanie_montpellier',
        'occitanie_montpellier_educonnect', 'occitanie_toulouse_edu', 'paris_classe_numerique',
        'val_de_marne', 'val_doise'
    ]

    if 'client' not in st.session_state or not st.session_state.client.logged_in:
        # Page de connexion
        st.title("Connexion à Pronote")
        college_choice = st.selectbox("🎒 Sélectionnez votre collège", list(colleges.keys()))
        url, cas_key = colleges[college_choice]

        if college_choice == 'Autre':
            url = st.text_input("🧷 URL de Pronote")
            cas = st.selectbox("📍 CAS", cas_options)
        else:
            cas = cas_key

        username = st.text_input("1️⃣ Identifiant")
        password = st.text_input("2️⃣ Mot de Passe", type="password")

        if st.button('Connexion'):
            try:
                client = pronotepy.Client(url, username, password, getattr(pronotepy.ent, cas, None))
                #client = pronotepy.Client("https://0952236p.index-education.net/pronote/eleve.html", "leny.levant", "Leny15@0", val_doise)
                if client.logged_in:
                    st.session_state.client = client
                    st.experimental_rerun()
                else:
                    st.error("Connexion impossible. Veuillez vérifier vos informations.")
            except ENTLoginError:
                st.error("Connexion impossible. Vérifiez vos informations de connexion.")
    else:
        client = st.session_state.client
        st.sidebar.title("Navigation")

        # Navigation
        page_buttons = {
            "🏠 Accueil": "accueil",
            "📅 Emploi du temps": "edt",
            "📚 Devoirs": "devoirs",
            "📝 Notes": "notes",
            "📧 Messagerie": "conv",
            "i️ Informations": "info",
            "🕒 Vie Scolaire": "vie_scolaire"
        }
        
        for button_label, page_name in page_buttons.items():
            if st.sidebar.button(button_label, key=page_name, use_container_width=True):
                st.session_state.current_page = page_name
                st.rerun()  # Force le rechargement de l'application avec le nouvel état

        if 'current_page' not in st.session_state:
            st.session_state.current_page = 'accueil'  # Défaut à accueil si non défini

        # Affichage conditionnel basé sur la page actuelle
        if st.session_state.current_page == 'accueil':
            accueil.app(client)
        elif st.session_state.current_page == 'devoirs':
            devoirs.app(client)
        elif st.session_state.current_page == 'notes':
            notes.app(client)
        elif st.session_state.current_page == 'edt':
            edt.app(client)
        elif st.session_state.current_page == 'contenu':
            contenu.show_lesson_content()
        elif st.session_state.current_page == 'info':
            info.app(client)
        elif st.session_state.current_page == 'vie_scolaire':
            vie_scolaire.app(client)
        elif st.session_state.current_page == 'conv':
            conv.app(client)

        if st.sidebar.button('🚪 Déconnexion'):
            del st.session_state.client
            del st.session_state.current_page
            st.rerun()

if __name__ == "__main__":
    main()