File size: 2,561 Bytes
e4fe207
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
# class.py
import streamlit as st
import pandas as pd
from app5_selectbox.database_con import cursor, db_connection
from app5_selectbox.app5_selectbox_func import display_table, generate_unique_4


# In the display_table function, fetch and display prog_code
def display_class_table(cursor, table_name):
    if table_name == "class":
        cursor.execute("SELECT class.class_id, class.prog_id, program.prog_code, class.class_year, class.class_section FROM class INNER JOIN program ON class.prog_id = program.prog_id")
        data = cursor.fetchall()
        column_names = [i[0] for i in cursor.description]
        df = pd.DataFrame(data, columns=column_names)
        st.dataframe(df.style.set_properties(**{'text-align': 'center'}))

def class_tbl(table_name):
    class_id = generate_unique_4(cursor, "class_id", table_name)

    # Fetch available programs from the 'program' table
    cursor.execute("SELECT prog_id, prog_name, prog_code FROM program")
    available_programs = cursor.fetchall()
    prog_id = st.selectbox("Program ID", available_programs, format_func=lambda row: f"{row[1]} ({row[2]})", key="prog_id")[0]
    class_year = st.selectbox("Class Year", ("1", "2", "3", "4"), key="class_year")
    class_section = st.text_input("Class Section", key="class_section", max_chars=1).upper()

    if st.button("Insert Class Record"):
        # Check if the class_year and class_section are provided
        if not class_year or not class_section:
            st.error("Class Year and Class Section are required. Please provide values for both fields.")
        else:
            try:
                # Check for duplicates
                cursor.execute("SELECT class_id FROM class WHERE prog_id = %s AND class_year = %s AND class_section = %s",
                                (prog_id, class_year, class_section))
                result = cursor.fetchone()
                if result is not None:
                    st.error("A record with the same Program ID, Class Year, and Class Section already exists.")
                else:
                    # Insert a record into the class table
                    cursor.execute("INSERT INTO class (class_id, prog_id, class_year, class_section) VALUES (%s, %s, %s, %s)",
                                    (class_id, prog_id, class_year, class_section))
                    db_connection.commit()
                    st.success("Record inserted successfully.")
            except Exception as e:
                st.error(f"An error occurred: {str(e)}")
    display_class_table(cursor, table_name)