MENG21's picture
Upload 68 files
e4fe207 verified
# 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)