Tanseer45203 commited on
Commit
92d186f
·
verified ·
1 Parent(s): 38d47f4

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +59 -0
app.py ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ from fpdf import FPDF
3
+
4
+ # Initialize session state for timetable
5
+ if "timetable" not in st.session_state:
6
+ st.session_state["timetable"] = ""
7
+
8
+ # Streamlit App UI
9
+ st.title("Class Timetable Generator")
10
+ st.write("Generate and manage class schedules effortlessly.")
11
+
12
+ # Input fields for timetable generation
13
+ teachers_input = st.text_input("Enter the names of teachers (comma-separated)", key="teachers_input")
14
+ subjects_input = st.text_input("Enter the subjects (comma-separated)", key="subjects_input")
15
+ slots_input = st.text_input("Enter the available slots (comma-separated)", key="slots_input")
16
+
17
+ # Function to generate a simple timetable
18
+ def generate_timetable(teachers, subjects, slots):
19
+ timetable = []
20
+ for i in range(min(len(teachers), len(subjects), len(slots))):
21
+ timetable.append(f"Slot: {slots[i]} | Subject: {subjects[i]} | Teacher: {teachers[i]}")
22
+ if not timetable:
23
+ timetable.append("No timetable could be generated. Ensure there are enough teachers, subjects, and slots.")
24
+ return "\n".join(timetable)
25
+
26
+ # Function to save timetable as PDF
27
+ def save_timetable_as_pdf(timetable, filename="timetable.pdf"):
28
+ pdf = FPDF()
29
+ pdf.add_page()
30
+ pdf.set_font("Arial", size=12)
31
+ pdf.cell(200, 10, txt="Class Timetable", ln=True, align="C")
32
+ pdf.ln(10) # Add some space
33
+ for line in timetable.split("\n"):
34
+ pdf.cell(200, 10, txt=line, ln=True)
35
+ pdf.output(filename)
36
+ return filename
37
+
38
+ # Generate timetable based on input
39
+ if st.button("Generate Timetable", key="generate_button"):
40
+ if teachers_input and subjects_input and slots_input:
41
+ teachers = [t.strip() for t in teachers_input.split(",")]
42
+ subjects = [s.strip() for s in subjects_input.split(",")]
43
+ slots = [s.strip() for s in slots_input.split(",")]
44
+
45
+ st.info("Generating timetable...")
46
+ st.session_state["timetable"] = generate_timetable(teachers, subjects, slots)
47
+ st.success("Timetable generated successfully!")
48
+ else:
49
+ st.warning("Please fill all fields to generate the timetable.")
50
+
51
+ # Display generated timetable
52
+ if st.session_state["timetable"]:
53
+ st.text_area("Generated Timetable", st.session_state["timetable"], height=300, key="timetable_output")
54
+
55
+ # Option to download the timetable as a PDF
56
+ if st.button("Download PDF", key="download_button"):
57
+ pdf_file = save_timetable_as_pdf(st.session_state["timetable"])
58
+ with open(pdf_file, "rb") as file:
59
+ st.download_button("Download