Spaces:
Paused
Paused
| # subject.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 | |
| # Existing code for adding subjects | |
| def subject(table_name): | |
| sub_id_code = generate_unique_4(cursor, "sub_id_code", table_name) | |
| sub_name = st.text_input("Subject Name", key="sub_name").upper() | |
| # Fetch program options from the database | |
| cursor.execute("SELECT prog_id, prog_name FROM program") | |
| program_options = cursor.fetchall() | |
| prog_id_options = {str(prog[0]): prog[1] for prog in program_options} | |
| # Fetch academic year options from the database, including sem_num | |
| cursor.execute("SELECT acad_id, ' - Semester ' || sem_num FROM academic_list") | |
| academic_options = cursor.fetchall() | |
| acad_id_options = {str(acad[0]): acad[1] for acad in academic_options} | |
| prog_id = st.selectbox("Program", list(prog_id_options.keys()), format_func=lambda x: prog_id_options[x]) | |
| acad_id = st.selectbox("Academic Year and Semester", list(acad_id_options.keys()), format_func=lambda x: acad_id_options[x]) | |
| if st.button("Insert Subject Record"): | |
| # Check if sub_name, prog_id, and acad_id are provided | |
| if not sub_name or not prog_id or not acad_id: | |
| st.error("Subject Name, Program, and Academic Year and Semester are required. Please provide values for all fields.") | |
| else: | |
| try: | |
| # Check for duplicates | |
| cursor.execute("SELECT sub_id_code FROM subject WHERE sub_name = ? AND prog_id = ? AND acad_id = ?", | |
| (sub_name, prog_id, acad_id)) | |
| duplicate_check = cursor.fetchone() | |
| if duplicate_check: | |
| st.error("A subject with the same name, program, and academic year and semester already exists.") | |
| else: | |
| # Insert a record into the subject table | |
| cursor.execute("INSERT INTO subject (sub_id_code, sub_name, prog_id, acad_id) VALUES (?, ?, ?, ?)", | |
| (sub_id_code, sub_name, prog_id, acad_id)) | |
| db_connection.commit() | |
| st.success("Record inserted successfully.") | |
| except Exception as e: | |
| st.error(f"An error occurred: {str(e)}") | |
| # New code for displaying the DataFrame | |
| st.header("Filtered Subjects") | |
| if prog_id and acad_id: | |
| cursor.execute("SELECT sub_id_code, sub_name FROM subject WHERE prog_id = ? AND acad_id = ?", | |
| (prog_id, acad_id)) | |
| subject_data = cursor.fetchall() | |
| if subject_data: | |
| df = pd.DataFrame(subject_data, columns=["sub_id_code", "sub_name"]) | |
| st.dataframe(df.style.set_properties(**{'text-align': 'center'})) | |
| else: | |
| st.warning("No subjects found for the selected Program and Academic Year/Semester.") | |
| display_table(cursor, table_name) | |