From a7bb2f3dae6c61a91f37a72b766be1055b671f59 Mon Sep 17 00:00:00 2001 From: Talhadeveloperr <23021519-005@uog.edu.pk> Date: Wed, 9 Sep 2026 17:00:54 +0500 Subject: [PATCH] initial project --- .gitignore | 1 + app/template_generator.py | 84 +++++++ app/xlsx_grid_helper.py | 122 +++++++++++ controller/conflict_checker/__init__.py | 19 ++ .../student_conflict_checker.py | 63 ++++++ .../teacher_conflict_checker.py | 59 +++++ controller/template_controller.py | 206 ++++++++++++++++++ data/dummy/batch_codes/25/batches.csv | 4 + data/dummy/batch_codes/26/batches.csv | 4 + data/dummy/blocks/blocks.csv | 2 + data/dummy/blocks/rooms.csv | 7 + data/dummy/courses/course_offering.csv | 25 +++ data/dummy/courses/courses.csv | 9 + data/dummy/generate_dummy_data.py | 160 ++++++++++++++ data/dummy/instructor/instructors.csv | 7 + data/dummy/roll_no/students.csv | 31 +++ requirements.txt | 1 + result/templates/batch-wise/25021519.xlsx | Bin 0 -> 5654 bytes result/templates/batch-wise/25021520.xlsx | Bin 0 -> 5657 bytes result/templates/batch-wise/25031519.xlsx | Bin 0 -> 5620 bytes result/templates/batch-wise/26021519.xlsx | Bin 0 -> 5657 bytes result/templates/batch-wise/26021520.xlsx | Bin 0 -> 5661 bytes result/templates/batch-wise/26031519.xlsx | Bin 0 -> 5617 bytes result/templates/department-wise/CS.xlsx | Bin 0 -> 5807 bytes result/templates/department-wise/EE.xlsx | Bin 0 -> 5701 bytes result/templates/room-wise/A-101.xlsx | Bin 0 -> 5684 bytes result/templates/room-wise/A-102.xlsx | Bin 0 -> 5641 bytes result/templates/room-wise/A-103.xlsx | Bin 0 -> 5468 bytes result/templates/room-wise/A-201.xlsx | Bin 0 -> 5468 bytes result/templates/room-wise/A-L01.xlsx | Bin 0 -> 5622 bytes result/templates/room-wise/A-L02.xlsx | Bin 0 -> 5621 bytes .../templates/student-wise/25021519-001.xlsx | Bin 0 -> 5674 bytes .../templates/student-wise/25021519-002.xlsx | Bin 0 -> 5677 bytes .../templates/student-wise/25021519-003.xlsx | Bin 0 -> 5674 bytes .../templates/student-wise/25021519-004.xlsx | Bin 0 -> 5677 bytes .../templates/student-wise/25021519-005.xlsx | Bin 0 -> 5677 bytes .../templates/student-wise/25021520-001.xlsx | Bin 0 -> 5676 bytes .../templates/student-wise/25021520-002.xlsx | Bin 0 -> 5677 bytes .../templates/student-wise/25021520-003.xlsx | Bin 0 -> 5676 bytes .../templates/student-wise/25021520-004.xlsx | Bin 0 -> 5676 bytes .../templates/student-wise/25021520-005.xlsx | Bin 0 -> 5676 bytes .../templates/student-wise/25031519-001.xlsx | Bin 0 -> 5642 bytes .../templates/student-wise/25031519-002.xlsx | Bin 0 -> 5642 bytes .../templates/student-wise/25031519-003.xlsx | Bin 0 -> 5642 bytes .../templates/student-wise/25031519-004.xlsx | Bin 0 -> 5642 bytes .../templates/student-wise/25031519-005.xlsx | Bin 0 -> 5642 bytes .../templates/student-wise/26021519-001.xlsx | Bin 0 -> 5681 bytes .../templates/student-wise/26021519-002.xlsx | Bin 0 -> 5681 bytes .../templates/student-wise/26021519-003.xlsx | Bin 0 -> 5679 bytes .../templates/student-wise/26021519-004.xlsx | Bin 0 -> 5681 bytes .../templates/student-wise/26021519-005.xlsx | Bin 0 -> 5679 bytes .../templates/student-wise/26021520-001.xlsx | Bin 0 -> 5678 bytes .../templates/student-wise/26021520-002.xlsx | Bin 0 -> 5680 bytes .../templates/student-wise/26021520-003.xlsx | Bin 0 -> 5681 bytes .../templates/student-wise/26021520-004.xlsx | Bin 0 -> 5679 bytes .../templates/student-wise/26021520-005.xlsx | Bin 0 -> 5681 bytes .../templates/student-wise/26031519-001.xlsx | Bin 0 -> 5639 bytes .../templates/student-wise/26031519-002.xlsx | Bin 0 -> 5639 bytes .../templates/student-wise/26031519-003.xlsx | Bin 0 -> 5640 bytes .../templates/student-wise/26031519-004.xlsx | Bin 0 -> 5640 bytes .../templates/student-wise/26031519-005.xlsx | Bin 0 -> 5641 bytes result/templates/teacher-wise/1001.xlsx | Bin 0 -> 5592 bytes result/templates/teacher-wise/1002.xlsx | Bin 0 -> 5655 bytes result/templates/teacher-wise/1003.xlsx | Bin 0 -> 5463 bytes result/templates/teacher-wise/1004.xlsx | Bin 0 -> 5563 bytes result/templates/teacher-wise/1005.xlsx | Bin 0 -> 5461 bytes result/templates/teacher-wise/1006.xlsx | Bin 0 -> 5536 bytes templates/batch-wise/batch_wise_template.py | 49 +++++ .../department_wise_template.py | 54 +++++ templates/room-wise/room_wise_template.py | 45 ++++ .../student-wise/student_wise_template.py | 54 +++++ .../teacher-wise/teacher_wise_template.py | 45 ++++ 72 files changed, 1051 insertions(+) create mode 100644 .gitignore create mode 100644 app/template_generator.py create mode 100644 app/xlsx_grid_helper.py create mode 100644 controller/conflict_checker/__init__.py create mode 100644 controller/conflict_checker/student_conflict_checker.py create mode 100644 controller/conflict_checker/teacher_conflict_checker.py create mode 100644 controller/template_controller.py create mode 100644 data/dummy/batch_codes/25/batches.csv create mode 100644 data/dummy/batch_codes/26/batches.csv create mode 100644 data/dummy/blocks/blocks.csv create mode 100644 data/dummy/blocks/rooms.csv create mode 100644 data/dummy/courses/course_offering.csv create mode 100644 data/dummy/courses/courses.csv create mode 100644 data/dummy/generate_dummy_data.py create mode 100644 data/dummy/instructor/instructors.csv create mode 100644 data/dummy/roll_no/students.csv create mode 100644 requirements.txt create mode 100644 result/templates/batch-wise/25021519.xlsx create mode 100644 result/templates/batch-wise/25021520.xlsx create mode 100644 result/templates/batch-wise/25031519.xlsx create mode 100644 result/templates/batch-wise/26021519.xlsx create mode 100644 result/templates/batch-wise/26021520.xlsx create mode 100644 result/templates/batch-wise/26031519.xlsx create mode 100644 result/templates/department-wise/CS.xlsx create mode 100644 result/templates/department-wise/EE.xlsx create mode 100644 result/templates/room-wise/A-101.xlsx create mode 100644 result/templates/room-wise/A-102.xlsx create mode 100644 result/templates/room-wise/A-103.xlsx create mode 100644 result/templates/room-wise/A-201.xlsx create mode 100644 result/templates/room-wise/A-L01.xlsx create mode 100644 result/templates/room-wise/A-L02.xlsx create mode 100644 result/templates/student-wise/25021519-001.xlsx create mode 100644 result/templates/student-wise/25021519-002.xlsx create mode 100644 result/templates/student-wise/25021519-003.xlsx create mode 100644 result/templates/student-wise/25021519-004.xlsx create mode 100644 result/templates/student-wise/25021519-005.xlsx create mode 100644 result/templates/student-wise/25021520-001.xlsx create mode 100644 result/templates/student-wise/25021520-002.xlsx create mode 100644 result/templates/student-wise/25021520-003.xlsx create mode 100644 result/templates/student-wise/25021520-004.xlsx create mode 100644 result/templates/student-wise/25021520-005.xlsx create mode 100644 result/templates/student-wise/25031519-001.xlsx create mode 100644 result/templates/student-wise/25031519-002.xlsx create mode 100644 result/templates/student-wise/25031519-003.xlsx create mode 100644 result/templates/student-wise/25031519-004.xlsx create mode 100644 result/templates/student-wise/25031519-005.xlsx create mode 100644 result/templates/student-wise/26021519-001.xlsx create mode 100644 result/templates/student-wise/26021519-002.xlsx create mode 100644 result/templates/student-wise/26021519-003.xlsx create mode 100644 result/templates/student-wise/26021519-004.xlsx create mode 100644 result/templates/student-wise/26021519-005.xlsx create mode 100644 result/templates/student-wise/26021520-001.xlsx create mode 100644 result/templates/student-wise/26021520-002.xlsx create mode 100644 result/templates/student-wise/26021520-003.xlsx create mode 100644 result/templates/student-wise/26021520-004.xlsx create mode 100644 result/templates/student-wise/26021520-005.xlsx create mode 100644 result/templates/student-wise/26031519-001.xlsx create mode 100644 result/templates/student-wise/26031519-002.xlsx create mode 100644 result/templates/student-wise/26031519-003.xlsx create mode 100644 result/templates/student-wise/26031519-004.xlsx create mode 100644 result/templates/student-wise/26031519-005.xlsx create mode 100644 result/templates/teacher-wise/1001.xlsx create mode 100644 result/templates/teacher-wise/1002.xlsx create mode 100644 result/templates/teacher-wise/1003.xlsx create mode 100644 result/templates/teacher-wise/1004.xlsx create mode 100644 result/templates/teacher-wise/1005.xlsx create mode 100644 result/templates/teacher-wise/1006.xlsx create mode 100644 templates/batch-wise/batch_wise_template.py create mode 100644 templates/department-wise/department_wise_template.py create mode 100644 templates/room-wise/room_wise_template.py create mode 100644 templates/student-wise/student_wise_template.py create mode 100644 templates/teacher-wise/teacher_wise_template.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e99e36 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +*.pyc \ No newline at end of file diff --git a/app/template_generator.py b/app/template_generator.py new file mode 100644 index 0000000..5b005c6 --- /dev/null +++ b/app/template_generator.py @@ -0,0 +1,84 @@ +""" +Main entry point: builds a clash-free dummy schedule and renders all five +timetable views (batch/department/room/student/teacher -wise) as .xlsx +files under result/templates//. + +Run: + python app/template_generator.py +""" + +import os +import sys + +APP_DIR = os.path.dirname(os.path.abspath(__file__)) +ROOT_DIR = os.path.dirname(APP_DIR) + +sys.path.insert(0, APP_DIR) +sys.path.insert(0, os.path.join(ROOT_DIR, "controller")) +sys.path.insert(0, os.path.join(ROOT_DIR, "templates", "batch-wise")) +sys.path.insert(0, os.path.join(ROOT_DIR, "templates", "department-wise")) +sys.path.insert(0, os.path.join(ROOT_DIR, "templates", "room-wise")) +sys.path.insert(0, os.path.join(ROOT_DIR, "templates", "student-wise")) +sys.path.insert(0, os.path.join(ROOT_DIR, "templates", "teacher-wise")) + +from template_controller import build_schedule # noqa: E402 +from conflict_checker import check_all_conflicts # noqa: E402 +from conflict_checker.student_conflict_checker import format_student_conflicts # noqa: E402 +from conflict_checker.teacher_conflict_checker import format_teacher_conflicts # noqa: E402 + +from batch_wise_template import generate_batch_wise_templates # noqa: E402 +from department_wise_template import generate_department_wise_templates # noqa: E402 +from room_wise_template import generate_room_wise_templates # noqa: E402 +from student_wise_template import generate_student_wise_templates # noqa: E402 +from teacher_wise_template import generate_teacher_wise_templates # noqa: E402 + +RESULT_DIR = os.path.join(ROOT_DIR, "result", "templates") + + +def main(): + data_csv_marker = os.path.join(ROOT_DIR, "data", "dummy", "blocks", "rooms.csv") + if not os.path.exists(data_csv_marker): + print("Dummy data not found — generating it first...") + sys.path.insert(0, os.path.join(ROOT_DIR, "data", "dummy")) + from generate_dummy_data import main as generate_dummy_data + generate_dummy_data() + print() + + print("Loading data and building clash-free schedule...") + data, sessions = build_schedule() + print(f"Scheduled {len(sessions)} sessions.\n") + + print("Running conflict checks (student/batch and teacher)...") + report = check_all_conflicts(sessions) + if report["has_conflicts"]: + for line in format_student_conflicts(report["student_conflicts"]): + print(f" STUDENT CONFLICT: {line}") + for line in format_teacher_conflicts(report["teacher_conflicts"]): + print(f" TEACHER CONFLICT: {line}") + print( + f"Found {len(report['student_conflicts'])} student conflict(s) and " + f"{len(report['teacher_conflicts'])} teacher conflict(s).\n" + ) + else: + print("No conflicts found — schedule is clash-free for students and teachers.\n") + + generators = [ + ("batch-wise", generate_batch_wise_templates), + ("department-wise", generate_department_wise_templates), + ("room-wise", generate_room_wise_templates), + ("student-wise", generate_student_wise_templates), + ("teacher-wise", generate_teacher_wise_templates), + ] + + total_files = 0 + for view_name, generate_fn in generators: + output_dir = os.path.join(RESULT_DIR, view_name) + written = generate_fn(sessions, data, output_dir) + total_files += len(written) + print(f"[{view_name}] generated {len(written)} file(s) -> {output_dir}") + + print(f"\nDone. {total_files} timetable file(s) written under {RESULT_DIR}") + + +if __name__ == "__main__": + main() diff --git a/app/xlsx_grid_helper.py b/app/xlsx_grid_helper.py new file mode 100644 index 0000000..5fa33a1 --- /dev/null +++ b/app/xlsx_grid_helper.py @@ -0,0 +1,122 @@ +""" +Shared openpyxl helpers for rendering a day x time-slot timetable grid. +Used by every templates/*-wise/*_template.py module so styling stays +consistent across views. +""" + +import os + +from openpyxl import Workbook +from openpyxl.styles import Alignment, Border, Font, PatternFill, Side +from openpyxl.utils import get_column_letter + +DAYS = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] + +HEADER_FILL = PatternFill(start_color="1F4E78", end_color="1F4E78", fill_type="solid") +HEADER_FONT = Font(color="FFFFFF", bold=True) +LUNCH_FILL = PatternFill(start_color="D9D9D9", end_color="D9D9D9", fill_type="solid") +GENERAL_FILL = PatternFill(start_color="FFF2CC", end_color="FFF2CC", fill_type="solid") +LAB_FILL = PatternFill(start_color="D9EAD3", end_color="D9EAD3", fill_type="solid") +THEORY_FILL = PatternFill(start_color="DDEBF7", end_color="DDEBF7", fill_type="solid") +THIN_BORDER = Border( + left=Side(style="thin"), right=Side(style="thin"), + top=Side(style="thin"), bottom=Side(style="thin"), +) +CENTER = Alignment(horizontal="center", vertical="center", wrap_text=True) + + +def cell_fill_for(session): + if session is None: + return None + if session.get("is_general"): + return GENERAL_FILL + if session.get("course_type") == "lab": + return LAB_FILL + return THEORY_FILL + + +def build_grid_sheet(ws, title, subtitle, time_slots, sessions_by_day_slot, cell_text_fn): + """ + Renders one timetable grid onto worksheet `ws`. + + time_slots: ordered list of dicts: {"label": str, "start": str, "end": str, + "is_lunch": bool} + sessions_by_day_slot: dict[(day, slot_index)] -> session dict (or list of + session dicts for slots spanning a double/lab period), used + only to decide fill color via cell_fill_for(). + cell_text_fn: function(day, slot_index) -> str to render into the cell. + """ + invalid_chars = ':\\/?*[]' + sheet_name = "".join(c for c in title if c not in invalid_chars) + ws.title = sheet_name[:31] # Excel sheet name limit + + ws.merge_cells("A1:F1") + ws["A1"] = title + ws["A1"].font = Font(bold=True, size=14) + ws["A1"].alignment = CENTER + + if subtitle: + ws.merge_cells("A2:F2") + ws["A2"] = subtitle + ws["A2"].font = Font(italic=True, size=10, color="555555") + ws["A2"].alignment = CENTER + + header_row = 4 + ws.cell(row=header_row, column=1, value="Time").font = HEADER_FONT + ws.cell(row=header_row, column=1).fill = HEADER_FILL + ws.cell(row=header_row, column=1).alignment = CENTER + ws.cell(row=header_row, column=1).border = THIN_BORDER + + for col, day in enumerate(DAYS, start=2): + c = ws.cell(row=header_row, column=col, value=day) + c.font = HEADER_FONT + c.fill = HEADER_FILL + c.alignment = CENTER + c.border = THIN_BORDER + + for row_offset, slot in enumerate(time_slots): + row = header_row + 1 + row_offset + time_cell = ws.cell(row=row, column=1, value=f'{slot["start"]} - {slot["end"]}') + time_cell.font = Font(bold=True, size=9) + time_cell.alignment = CENTER + time_cell.border = THIN_BORDER + if slot.get("is_lunch"): + time_cell.fill = LUNCH_FILL + + for col, day in enumerate(DAYS, start=2): + cell = ws.cell(row=row, column=col) + cell.border = THIN_BORDER + cell.alignment = CENTER + cell.font = Font(size=9) + + if slot.get("is_lunch"): + cell.fill = LUNCH_FILL + cell.value = "LUNCH BREAK" + continue + + text = cell_text_fn(day, row_offset) + cell.value = text if text else "" + + session = sessions_by_day_slot.get((day, row_offset)) + fill = cell_fill_for(session) + if fill: + cell.fill = fill + + ws.column_dimensions["A"].width = 16 + for col in range(2, 2 + len(DAYS)): + ws.column_dimensions[get_column_letter(col)].width = 26 + + for row_offset in range(len(time_slots)): + ws.row_dimensions[header_row + 1 + row_offset].height = 42 + + +def save_workbook(wb, output_dir, filename): + os.makedirs(output_dir, exist_ok=True) + path = os.path.join(output_dir, filename) + wb.save(path) + return path + + +def new_workbook(): + wb = Workbook() + return wb diff --git a/controller/conflict_checker/__init__.py b/controller/conflict_checker/__init__.py new file mode 100644 index 0000000..04fe44d --- /dev/null +++ b/controller/conflict_checker/__init__.py @@ -0,0 +1,19 @@ +from .student_conflict_checker import check_student_conflicts +from .teacher_conflict_checker import check_teacher_conflicts + +__all__ = ["check_student_conflicts", "check_teacher_conflicts", "check_all_conflicts"] + + +def check_all_conflicts(sessions): + """ + Runs every conflict check against the given list of scheduled sessions + and returns a combined report: + {"student_conflicts": [...], "teacher_conflicts": [...], "has_conflicts": bool} + """ + student_conflicts = check_student_conflicts(sessions) + teacher_conflicts = check_teacher_conflicts(sessions) + return { + "student_conflicts": student_conflicts, + "teacher_conflicts": teacher_conflicts, + "has_conflicts": bool(student_conflicts or teacher_conflicts), + } diff --git a/controller/conflict_checker/student_conflict_checker.py b/controller/conflict_checker/student_conflict_checker.py new file mode 100644 index 0000000..814661f --- /dev/null +++ b/controller/conflict_checker/student_conflict_checker.py @@ -0,0 +1,63 @@ +""" +Verifies that no batch (and therefore no student in that batch) is booked +into two courses — lecture or lab — at the same day+slot. + +This is an independent verification pass over the scheduler's output: it +does not trust the scheduler's own busy-maps, it re-derives every batch's +occupied (day, slot_index) cells directly from the session list and flags +any cell used by more than one session. +""" + +from collections import defaultdict + + +def check_student_conflicts(sessions): + """ + Returns a list of conflict dicts, one per (batch, day, slot) where two + or more sessions overlap for that batch: + { + "batch_code": str, + "day": str, + "slot_index": int, + "sessions": [session, session, ...], + } + Sessions that span multiple slot_indices (labs) occupy every one of + their slot_indices, so a lab overlapping a lecture in either of its two + slots is caught too. + """ + # (batch_code, day, slot_index) -> list of sessions occupying that cell + occupied = defaultdict(list) + + for session in sessions: + day = session["day"] + for slot_index in session["slot_indices"]: + for batch_code in session["batch_codes"]: + occupied[(batch_code, day, slot_index)].append(session) + + conflicts = [] + for (batch_code, day, slot_index), cell_sessions in occupied.items(): + if len(cell_sessions) > 1: + conflicts.append({ + "batch_code": batch_code, + "day": day, + "slot_index": slot_index, + "sessions": cell_sessions, + }) + + conflicts.sort(key=lambda c: (c["batch_code"], c["day"], c["slot_index"])) + return conflicts + + +def format_student_conflicts(conflicts): + """Human-readable lines describing each student/batch conflict.""" + lines = [] + for c in conflicts: + course_list = ", ".join( + f'{s["course_id"]} ({s["course_type"]}) with {s["instructor_name"]} in {s["room_id"]}' + for s in c["sessions"] + ) + lines.append( + f'Batch {c["batch_code"]} has {len(c["sessions"])} overlapping courses on ' + f'{c["day"]} slot {c["slot_index"]}: {course_list}' + ) + return lines diff --git a/controller/conflict_checker/teacher_conflict_checker.py b/controller/conflict_checker/teacher_conflict_checker.py new file mode 100644 index 0000000..aecfb24 --- /dev/null +++ b/controller/conflict_checker/teacher_conflict_checker.py @@ -0,0 +1,59 @@ +""" +Verifies that no instructor is booked into two sessions at the same +day+slot (whether both are lectures, both labs, or a mix of either). + +Like student_conflict_checker, this re-derives occupancy directly from the +session list rather than trusting the scheduler's internal busy-maps. +""" + +from collections import defaultdict + + +def check_teacher_conflicts(sessions): + """ + Returns a list of conflict dicts, one per (instructor_code, day, slot) + where two or more sessions overlap for that instructor: + { + "instructor_code": str, + "day": str, + "slot_index": int, + "sessions": [session, session, ...], + } + """ + # (instructor_code, day, slot_index) -> list of sessions occupying that cell + occupied = defaultdict(list) + + for session in sessions: + day = session["day"] + instructor_code = session["instructor_code"] + for slot_index in session["slot_indices"]: + occupied[(instructor_code, day, slot_index)].append(session) + + conflicts = [] + for (instructor_code, day, slot_index), cell_sessions in occupied.items(): + if len(cell_sessions) > 1: + conflicts.append({ + "instructor_code": instructor_code, + "day": day, + "slot_index": slot_index, + "sessions": cell_sessions, + }) + + conflicts.sort(key=lambda c: (c["instructor_code"], c["day"], c["slot_index"])) + return conflicts + + +def format_teacher_conflicts(conflicts): + """Human-readable lines describing each teacher conflict.""" + lines = [] + for c in conflicts: + course_list = ", ".join( + f'{s["course_id"]} ({s["course_type"]}) for batch(es) {"+".join(s["batch_codes"])} in {s["room_id"]}' + for s in c["sessions"] + ) + instructor_name = c["sessions"][0]["instructor_name"] + lines.append( + f'Instructor {instructor_name} ({c["instructor_code"]}) is double-booked on ' + f'{c["day"]} slot {c["slot_index"]}: {course_list}' + ) + return lines diff --git a/controller/template_controller.py b/controller/template_controller.py new file mode 100644 index 0000000..ca7def1 --- /dev/null +++ b/controller/template_controller.py @@ -0,0 +1,206 @@ +""" +Loads dummy CSV data and builds a clash-free schedule of sessions that all +five templates/*-wise template modules render from. + +Scheduling rules (dummy/demo scheduler, not a full CSP solver): + 1. General courses (shared across every batch of a session) are placed + first, only on Tuesday, so those slots are locked in before anything + else and never clash across the batches sharing them. + 2. Lab courses (180-minute / double-slot) are placed next, in lab rooms + only, on whichever day/slot-pair is free for the batch, instructor, + and room. + 3. Remaining theory courses fill the rest of the week (Mon/Tue/Wed/Thu/Fri), + one 90-minute slot at a time, avoiding room / instructor / batch clashes. +""" + +import csv +import os + +DATA_DIR = os.path.join(os.path.dirname(os.path.dirname(os.path.abspath(__file__))), "data", "dummy") + +DAYS = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"] + +# Theory grid: 5 x 90-minute slots with a lunch break, 08:30-16:30 +TIME_SLOTS = [ + {"label": "S1", "start": "08:30", "end": "10:00", "is_lunch": False}, + {"label": "S2", "start": "10:00", "end": "11:30", "is_lunch": False}, + {"label": "S3", "start": "11:30", "end": "13:00", "is_lunch": False}, + {"label": "LUNCH", "start": "13:00", "end": "13:30", "is_lunch": True}, + {"label": "S4", "start": "13:30", "end": "15:00", "is_lunch": False}, + {"label": "S5", "start": "15:00", "end": "16:30", "is_lunch": False}, +] + +# Indices into TIME_SLOTS that are real teaching slots (skip lunch) +TEACHING_SLOT_INDICES = [i for i, s in enumerate(TIME_SLOTS) if not s["is_lunch"]] + +# Consecutive pairs of teaching slots usable as a 180-minute lab double-slot +LAB_SLOT_PAIRS = [ + (a, b) + for a, b in zip(TEACHING_SLOT_INDICES, TEACHING_SLOT_INDICES[1:]) + if TIME_SLOTS[b]["start"] == TIME_SLOTS[a]["end"] +] + + +def _read_csv(relative_path): + path = os.path.join(DATA_DIR, relative_path) + with open(path, newline="", encoding="utf-8") as f: + return list(csv.DictReader(f)) + + +def load_data(): + """Loads all dummy CSVs into plain dict/list structures.""" + rooms = _read_csv(os.path.join("blocks", "rooms.csv")) + blocks = _read_csv(os.path.join("blocks", "blocks.csv")) + instructors = _read_csv(os.path.join("instructor", "instructors.csv")) + courses = _read_csv(os.path.join("courses", "courses.csv")) + offerings = _read_csv(os.path.join("courses", "course_offering.csv")) + students = _read_csv(os.path.join("roll_no", "students.csv")) + batches_25 = _read_csv(os.path.join("batch_codes", "25", "batches.csv")) + batches_26 = _read_csv(os.path.join("batch_codes", "26", "batches.csv")) + batches = batches_25 + batches_26 + + courses_by_id = {c["course_id"]: c for c in courses} + instructors_by_code = {i["instructor_code"]: i for i in instructors} + batches_by_code = {b["batch_code"]: b for b in batches} + + # normalize offerings: expand "batch1|batch2" general offerings into a + # list of batch codes on each offering record + for off in offerings: + off["batch_codes"] = off["batch_code"].split("|") + off["is_general"] = courses_by_id[off["course_id"]]["is_general"].lower() == "yes" + off["course_type"] = courses_by_id[off["course_id"]]["course_type"] + + return { + "rooms": rooms, + "blocks": blocks, + "instructors": instructors, + "instructors_by_code": instructors_by_code, + "courses": courses, + "courses_by_id": courses_by_id, + "offerings": offerings, + "students": students, + "batches": batches, + "batches_by_code": batches_by_code, + } + + +class Scheduler: + """Greedy clash-free scheduler over rooms / instructors / batches.""" + + def __init__(self, data): + self.data = data + self.classrooms = [r for r in data["rooms"] if r["room_type"] == "classroom"] + self.labs = [r for r in data["rooms"] if r["room_type"] == "lab"] + + # busy[(day, slot_index)] -> set of keys already occupied + self.room_busy = {} + self.instructor_busy = {} + self.batch_busy = {} + + self.sessions = [] + + def _is_free(self, day, slot_index, room_id, instructor_code, batch_codes): + key = (day, slot_index) + if room_id in self.room_busy.get(key, set()): + return False + if instructor_code in self.instructor_busy.get(key, set()): + return False + if any(b in self.batch_busy.get(key, set()) for b in batch_codes): + return False + return True + + def _mark_busy(self, day, slot_index, room_id, instructor_code, batch_codes): + key = (day, slot_index) + self.room_busy.setdefault(key, set()).add(room_id) + self.instructor_busy.setdefault(key, set()).add(instructor_code) + self.batch_busy.setdefault(key, set()).update(batch_codes) + + def _add_session(self, offering, day, slot_indices, room): + course = self.data["courses_by_id"][offering["course_id"]] + start = TIME_SLOTS[slot_indices[0]]["start"] + end = TIME_SLOTS[slot_indices[-1]]["end"] + self.sessions.append({ + "day": day, + "slot_indices": slot_indices, + "start": start, + "end": end, + "course_id": offering["course_id"], + "course_name": course["course_name"], + "course_type": course["course_type"], + "is_general": offering["is_general"], + "instructor_code": offering["instructor_code"], + "instructor_name": self.data["instructors_by_code"][offering["instructor_code"]]["instructor_name"], + "room_id": room["room_id"], + "room_name": room["room_name"], + "batch_codes": offering["batch_codes"], + }) + + def schedule_general_courses(self): + day = "Tuesday" + general = [o for o in self.data["offerings"] if o["is_general"]] + for offering in general: + placed = False + for slot_index in TEACHING_SLOT_INDICES: + for room in self.classrooms: + if self._is_free(day, slot_index, room["room_id"], offering["instructor_code"], offering["batch_codes"]): + self._mark_busy(day, slot_index, room["room_id"], offering["instructor_code"], offering["batch_codes"]) + self._add_session(offering, day, [slot_index], room) + placed = True + break + if placed: + break + if not placed: + print(f"WARNING: could not place general course {offering['course_id']}") + + def schedule_lab_courses(self): + labs_offerings = [o for o in self.data["offerings"] if o["course_type"] == "lab" and not o["is_general"]] + for offering in labs_offerings: + placed = False + for day in DAYS: + for slot_a, slot_b in LAB_SLOT_PAIRS: + for room in self.labs: + if self._is_free(day, slot_a, room["room_id"], offering["instructor_code"], offering["batch_codes"]) and \ + self._is_free(day, slot_b, room["room_id"], offering["instructor_code"], offering["batch_codes"]): + self._mark_busy(day, slot_a, room["room_id"], offering["instructor_code"], offering["batch_codes"]) + self._mark_busy(day, slot_b, room["room_id"], offering["instructor_code"], offering["batch_codes"]) + self._add_session(offering, day, [slot_a, slot_b], room) + placed = True + break + if placed: + break + if placed: + break + if not placed: + print(f"WARNING: could not place lab course {offering['course_id']} for {offering['batch_codes']}") + + def schedule_theory_courses(self): + theory_offerings = [o for o in self.data["offerings"] if o["course_type"] == "theory" and not o["is_general"]] + for offering in theory_offerings: + placed = False + for day in DAYS: + for slot_index in TEACHING_SLOT_INDICES: + for room in self.classrooms: + if self._is_free(day, slot_index, room["room_id"], offering["instructor_code"], offering["batch_codes"]): + self._mark_busy(day, slot_index, room["room_id"], offering["instructor_code"], offering["batch_codes"]) + self._add_session(offering, day, [slot_index], room) + placed = True + break + if placed: + break + if placed: + break + if not placed: + print(f"WARNING: could not place theory course {offering['course_id']} for {offering['batch_codes']}") + + def run(self): + self.schedule_general_courses() + self.schedule_lab_courses() + self.schedule_theory_courses() + return self.sessions + + +def build_schedule(): + data = load_data() + scheduler = Scheduler(data) + sessions = scheduler.run() + return data, sessions diff --git a/data/dummy/batch_codes/25/batches.csv b/data/dummy/batch_codes/25/batches.csv new file mode 100644 index 0000000..99fb6f5 --- /dev/null +++ b/data/dummy/batch_codes/25/batches.csv @@ -0,0 +1,4 @@ +batch_code,department,program,session +25021519,CS,BSCS,25 +25021520,CS,BSSE,25 +25031519,EE,BSEE,25 diff --git a/data/dummy/batch_codes/26/batches.csv b/data/dummy/batch_codes/26/batches.csv new file mode 100644 index 0000000..ef25f8a --- /dev/null +++ b/data/dummy/batch_codes/26/batches.csv @@ -0,0 +1,4 @@ +batch_code,department,program,session +26021519,CS,BSCS,26 +26021520,CS,BSSE,26 +26031519,EE,BSEE,26 diff --git a/data/dummy/blocks/blocks.csv b/data/dummy/blocks/blocks.csv new file mode 100644 index 0000000..cc42f81 --- /dev/null +++ b/data/dummy/blocks/blocks.csv @@ -0,0 +1,2 @@ +block_id,block_name +A,Block A diff --git a/data/dummy/blocks/rooms.csv b/data/dummy/blocks/rooms.csv new file mode 100644 index 0000000..5306ce8 --- /dev/null +++ b/data/dummy/blocks/rooms.csv @@ -0,0 +1,7 @@ +room_id,room_name,block_id,room_type,capacity +A-101,Room 101,A,classroom,60 +A-102,Room 102,A,classroom,60 +A-103,Room 103,A,classroom,50 +A-201,Room 201,A,classroom,60 +A-L01,Computer Lab 1,A,lab,35 +A-L02,Computer Lab 2,A,lab,35 diff --git a/data/dummy/courses/course_offering.csv b/data/dummy/courses/course_offering.csv new file mode 100644 index 0000000..bb12df3 --- /dev/null +++ b/data/dummy/courses/course_offering.csv @@ -0,0 +1,25 @@ +course_id,batch_code,instructor_code +CS101,25021519,1001 +CS102,25021519,1001 +CS201,25021519,1002 +CS202,25021519,1002 +CS101,25021520,1001 +CS102,25021520,1001 +CS201,25021520,1002 +CS202,25021520,1002 +EE101,25031519,1004 +EE102,25031519,1004 +CS101,26021519,1001 +CS102,26021519,1001 +CS201,26021519,1002 +CS202,26021519,1002 +CS101,26021520,1001 +CS102,26021520,1001 +CS201,26021520,1002 +CS202,26021520,1002 +EE101,26031519,1004 +EE102,26031519,1004 +GEN101,25021519|25021520|25031519,1002 +GEN102,25021519|25021520|25031519,1006 +GEN101,26021519|26021520|26031519,1002 +GEN102,26021519|26021520|26031519,1006 diff --git a/data/dummy/courses/courses.csv b/data/dummy/courses/courses.csv new file mode 100644 index 0000000..a88d24b --- /dev/null +++ b/data/dummy/courses/courses.csv @@ -0,0 +1,9 @@ +course_id,course_name,course_type,credit_hours,is_general +CS101,Programming Fundamentals,theory,3,no +CS102,Programming Fundamentals Lab,lab,1,no +CS201,Data Structures,theory,3,no +CS202,Data Structures Lab,lab,1,no +EE101,Basic Electronics,theory,3,no +EE102,Basic Electronics Lab,lab,1,no +GEN101,Functional English,theory,3,yes +GEN102,Islamic Studies,theory,2,yes diff --git a/data/dummy/generate_dummy_data.py b/data/dummy/generate_dummy_data.py new file mode 100644 index 0000000..3ca3cd7 --- /dev/null +++ b/data/dummy/generate_dummy_data.py @@ -0,0 +1,160 @@ +""" +Generates small illustrative dummy CSV datasets under data/dummy/ so the +timetable template generator has something to schedule and render. + +Run once: + python data/dummy/generate_dummy_data.py +""" + +import csv +import os + +BASE_DIR = os.path.dirname(os.path.abspath(__file__)) + + +def write_csv(relative_path, header, rows): + path = os.path.join(BASE_DIR, relative_path) + os.makedirs(os.path.dirname(path), exist_ok=True) + with open(path, "w", newline="", encoding="utf-8") as f: + writer = csv.writer(f) + writer.writerow(header) + writer.writerows(rows) + print(f"wrote {len(rows)} rows -> {path}") + + +def main(): + # ---- blocks & rooms (Building/Block A only) ---- + write_csv( + "blocks/blocks.csv", + ["block_id", "block_name"], + [["A", "Block A"]], + ) + + write_csv( + "blocks/rooms.csv", + ["room_id", "room_name", "block_id", "room_type", "capacity"], + [ + ["A-101", "Room 101", "A", "classroom", 60], + ["A-102", "Room 102", "A", "classroom", 60], + ["A-103", "Room 103", "A", "classroom", 50], + ["A-201", "Room 201", "A", "classroom", 60], + ["A-L01", "Computer Lab 1", "A", "lab", 35], + ["A-L02", "Computer Lab 2", "A", "lab", 35], + ], + ) + + # ---- departments / programs / batches ---- + # batch_code = session(2) + program_id(6) e.g. 25021519 + batches_25 = [ + ["25021519", "CS", "BSCS", "25"], + ["25021520", "CS", "BSSE", "25"], + ["25031519", "EE", "BSEE", "25"], + ] + batches_26 = [ + ["26021519", "CS", "BSCS", "26"], + ["26021520", "CS", "BSSE", "26"], + ["26031519", "EE", "BSEE", "26"], + ] + + write_csv( + "batch_codes/25/batches.csv", + ["batch_code", "department", "program", "session"], + batches_25, + ) + write_csv( + "batch_codes/26/batches.csv", + ["batch_code", "department", "program", "session"], + batches_26, + ) + + all_batches = batches_25 + batches_26 + + # ---- instructors (4-digit employee codes) ---- + instructors = [ + ["1001", "Dr. Ahsan Raza", "CS"], + ["1002", "Ms. Sana Tariq", "CS"], + ["1003", "Mr. Bilal Khan", "CS"], + ["1004", "Dr. Farah Iqbal", "EE"], + ["1005", "Mr. Usman Ali", "EE"], + ["1006", "Ms. Hira Shah", "CS"], + ] + write_csv( + "instructor/instructors.csv", + ["instructor_code", "instructor_name", "department"], + instructors, + ) + + # ---- courses ---- + # is_general courses are shared across all batches of the same session + # (so they can be scheduled together on Tuesday with no clash). + courses = [ + ["CS101", "Programming Fundamentals", "theory", 3, "no"], + ["CS102", "Programming Fundamentals Lab", "lab", 1, "no"], + ["CS201", "Data Structures", "theory", 3, "no"], + ["CS202", "Data Structures Lab", "lab", 1, "no"], + ["EE101", "Basic Electronics", "theory", 3, "no"], + ["EE102", "Basic Electronics Lab", "lab", 1, "no"], + ["GEN101", "Functional English", "theory", 3, "yes"], + ["GEN102", "Islamic Studies", "theory", 2, "yes"], + ] + write_csv( + "courses/courses.csv", + ["course_id", "course_name", "course_type", "credit_hours", "is_general"], + courses, + ) + + # ---- course offerings: which course is taught to which batch, by whom ---- + # General courses (GEN101/GEN102) are offered once per session (25/26) + # and shared across every batch in that session. + offerings = [] + + dept_theory_lab = { + "CS": [("CS101", "CS102"), ("CS201", "CS202")], + "EE": [("EE101", "EE102")], + } + dept_instructors = { + "CS": ["1001", "1002", "1003", "1006"], + "EE": ["1004", "1005"], + } + + for batch_code, department, program, session in all_batches: + pairs = dept_theory_lab[department] + instr_pool = dept_instructors[department] + for i, (theory_id, lab_id) in enumerate(pairs): + instr = instr_pool[i % len(instr_pool)] + offerings.append([theory_id, batch_code, instr]) + offerings.append([lab_id, batch_code, instr]) + + # general courses: one offering per (course, session), batch_group lists + # every batch code sharing that session, separated by "|" + for session, batch_group in ( + ("25", [b[0] for b in batches_25]), + ("26", [b[0] for b in batches_26]), + ): + offerings.append(["GEN101", "|".join(batch_group), "1002"]) + offerings.append(["GEN102", "|".join(batch_group), "1006"]) + + write_csv( + "courses/course_offering.csv", + ["course_id", "batch_code", "instructor_code"], + offerings, + ) + + # ---- students (roll_no = batch_code-seq) ---- + students = [] + for batch_code, department, program, session in all_batches: + for seq in range(1, 6): # 5 sample students per batch + roll_no = f"{batch_code}-{seq:03d}" + students.append([roll_no, batch_code, f"Student {roll_no}"]) + + write_csv( + "roll_no/students.csv", + ["roll_no", "batch_code", "student_name"], + students, + ) + + print("\nDummy data generation complete.") + + +if __name__ == "__main__": + main() diff --git a/data/dummy/instructor/instructors.csv b/data/dummy/instructor/instructors.csv new file mode 100644 index 0000000..0ff9b94 --- /dev/null +++ b/data/dummy/instructor/instructors.csv @@ -0,0 +1,7 @@ +instructor_code,instructor_name,department +1001,Dr. Ahsan Raza,CS +1002,Ms. Sana Tariq,CS +1003,Mr. Bilal Khan,CS +1004,Dr. Farah Iqbal,EE +1005,Mr. Usman Ali,EE +1006,Ms. Hira Shah,CS diff --git a/data/dummy/roll_no/students.csv b/data/dummy/roll_no/students.csv new file mode 100644 index 0000000..31327da --- /dev/null +++ b/data/dummy/roll_no/students.csv @@ -0,0 +1,31 @@ +roll_no,batch_code,student_name +25021519-001,25021519,Student 25021519-001 +25021519-002,25021519,Student 25021519-002 +25021519-003,25021519,Student 25021519-003 +25021519-004,25021519,Student 25021519-004 +25021519-005,25021519,Student 25021519-005 +25021520-001,25021520,Student 25021520-001 +25021520-002,25021520,Student 25021520-002 +25021520-003,25021520,Student 25021520-003 +25021520-004,25021520,Student 25021520-004 +25021520-005,25021520,Student 25021520-005 +25031519-001,25031519,Student 25031519-001 +25031519-002,25031519,Student 25031519-002 +25031519-003,25031519,Student 25031519-003 +25031519-004,25031519,Student 25031519-004 +25031519-005,25031519,Student 25031519-005 +26021519-001,26021519,Student 26021519-001 +26021519-002,26021519,Student 26021519-002 +26021519-003,26021519,Student 26021519-003 +26021519-004,26021519,Student 26021519-004 +26021519-005,26021519,Student 26021519-005 +26021520-001,26021520,Student 26021520-001 +26021520-002,26021520,Student 26021520-002 +26021520-003,26021520,Student 26021520-003 +26021520-004,26021520,Student 26021520-004 +26021520-005,26021520,Student 26021520-005 +26031519-001,26031519,Student 26031519-001 +26031519-002,26031519,Student 26031519-002 +26031519-003,26031519,Student 26031519-003 +26031519-004,26031519,Student 26031519-004 +26031519-005,26031519,Student 26031519-005 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..289437c --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +openpyxl>=3.1 diff --git a/result/templates/batch-wise/25021519.xlsx b/result/templates/batch-wise/25021519.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c0c45fafb3e5104e867c7b723afb3064a2703d80 GIT binary patch literal 5654 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 q(!@l9|A*%9#6maC-7#vtdy} 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 literal 0 HcmV?d00001 diff --git a/result/templates/batch-wise/25031519.xlsx b/result/templates/batch-wise/25031519.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..f20837916695e930d20a8444fac97411528114a4 GIT binary patch literal 5620 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 IzvTz`KlMMqkN^Mx literal 0 HcmV?d00001 diff --git a/result/templates/batch-wise/26021519.xlsx b/result/templates/batch-wise/26021519.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2a4282374b83096bf72c9212dde82a381f930163 GIT binary patch literal 5657 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 literal 0 HcmV?d00001 diff --git a/result/templates/batch-wise/26021520.xlsx b/result/templates/batch-wise/26021520.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..b8c5f693f34054002eb239d51bd115cb0855f7dd GIT binary patch literal 5661 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 literal 0 HcmV?d00001 diff --git a/result/templates/department-wise/EE.xlsx b/result/templates/department-wise/EE.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..016287ba47ed5aa65b8948d2070ee82a145bc670 GIT binary patch literal 5701 zcmZ`-2Q(ae`(DwzUA-;Q5>bLh^iI@85M{OKo#?$=i57Kri5^iFVG+V2M2IeWySgNT zXi@Xu+?@Nr_xiqX=FH5QbLM&H_de(Mwns+;8;1%201yB?V!6#!-fO95VBQ8X7X{|B zaktj-bocPO`^dwC-`~|mYgmi8OMnD#x#NLvQ+6DszGhT0iTCZTE z-~GY{w*&tTt4d>Bj}R>u~kh_z7mT*|+Uih;ZG zBMPW+h~t`)HRqPO7*kUg+TYGhy8%N0H#0w8d>_1*3=OD(hYvs6qwBM5%XQghGYsv9 zDivTW`6%#MXM^}f$Q5f-$3&PqHI8mRBhWIaMzg8$sdbU?UMScUjmK4nr@}otog0@g z?YAJBJZLbVM4V2hh=8E>;bz6|GG5lB=+55V8=qscD#NV2@TWP&m0y?iKIVNdx;aKB z(k3n4zUD)`%BEH>@HP%UKC=opyVZdrpSw(YTITdnxe;n_F?A6-ICmW4d-;bSB`Qi3 z|KM37GO{Sj;-^9|*1y@wHqB$FzykpCZUF$47Z4a;0#1x6g-^ z?{9921sr_ix7va~N&oI|IdgYzvbE{%;~qW}yf-0Y)R%up#&IHK@sxKlHoap`GkyA3DDu9a9aD z{1B3k`$p}!c$}I*h*VM{-)P7;`1sw<^Mw9cZ(&!4<<)(EG1S0VyayA`vTkcZSN@?( zM~OUPL$TwC&GhkXO-k9TL_O{ClaQq^xej?mi7@SPXTOEMy-nwvX6mqP6-;I5$0{xn8DqV#``FS7T zn>CNz__kBx9H3(ULKI=3PR>@J%_;h!Kbyh$hbCur5z z$hpd8w}pi9i*t+#-$p-ldj2X_Smq^IhzNJT1uU~3=udPH(c7j|6B&f{b9DAzSLKgL zw0IbQ$Z+Xy%b|4PSkpcB5c|&Yc-W$f8|>YAjo|E*F#m09L(jp!_xi{*?rHJo=&zR! zG6nlPXEPkp$Q)xncA8|3h}ZHQ%@^_gdw1RuZrQ*%2?zAYZSTc_3KSUKw)KwGGp5#& zEw`JcU~AjRLT?$~;ZrG#&4xi@h+>nc#%EM|dn1>a`eEHi4=8wmMABX=l^Nytf?4GJ z*vxm0y;MLiQ?Z#rp&i@xP5!)uSV2}w3(@$4WcTjV?H+%I74aFImXIt%*UjnC(euqt z-P+<^DFpNTC*O;1ek+7$4Rh-e z-uV8&z)}#_i_Mc<6s(z`yydZ(X=<@Lnz}kyX4~k7@-9QZ;zA~=vdrks`(h!4Gto z)*12J?<6hU)I-%W;$h0XQE;gF7$=A-u9gJ%Cave{?rxfsU&7QGZ-i^KzL3o)+J42S zozf6b#c6%cgPK_`;+VM={lQj-b}mbe?m)MEzFR-%%qOH9Xr)ySinEu&uVcM(1Dm^) zt9}|yf=`8(#69LD7O~AYD0vl2LOVm^;=+NIR_$+)+NYd(k_|!o5v;ivlXE4<3(F+I z6O|^VHatLC4g6r1R6Oeh*rBk+Gb*d4|vU3xp4#%XzOewhLg4rn1;x#Cd)cn;hX>HfLq(64zJFXQFo+0SZQfvU=2{`~j z_q%}jxqCW$IoR5Id)@u>@n;ozYxuj03?oN=ROFNGljaTpUK38|e&ov6RGo_*k|Cfl z(u1+3n$CuGq`EMvy2Qh?L(r4!!AmJaryRj5lKr83I5)9EZMpxj<^ftsHn_HH>foJn zF0irLPo~@I^zqM42MC5`lYGcrLA@A zCg&0N+ti{NYHt#&Stz!k2JEHhNeH zan%UJMumS#E2F;KZJl6^9M4Of)~-oXzS@s1FN_HhJbeP(i+hIjPq4$MaQ4*0{qCUe zVqH~)yAf^`5D}=$dE8;;#VSk+0rE0$(^Gi}S$X4U)gxS96^@sV3Zb)Z+YaKUy*65T zX9Gti6LM1v;^+$3$E@i?jvric7%FcWL>F)!G7uog^vg{8DA5t5s025+PATHa-tpIGL*-v$;nMdi%ocK#`(fbQ% z=8GUf>r7TS3D@#*0G8e!ZS&{mBv@ucm&P;|Ja6k<-BZaX&8i@rJd8b(PE*z?w!rg8 zg@gZ4c_!!lfrdaVPUNk=y@OC(+I;Bd3Zh&fE&h3Ya7^h-a{6v*>t=fra(Z`xD9eJr zMCxes{Jc26qeYi(Wf7J5=D`(J{6b^=N0nsWR~clc6|oY`(P33ld(099FrN{GP!xfA zdDTd`yb&IK8}MN@nL;sH0?p&xo)oe`JLbb#pJl{J#F7Wgp=NwO1D~Bre4hib$(Sjo z#GOpd!s{qkVI}i^x4RevZtw`80HNW@HNTQU2s@w2Bt7Y=dJfZXESDRT8qG*=R*#v#4_0ZqqRU4F724E2~naM z3-3{7M2H@ChHGAAhC<{hgkqB}yFslR*Y8=ulc;Si6_tm&XhR;>x^c{$uU4Gf#hQ2^Zme_B zAAhodg5B&W>|(GMSvO?s7nWq_`P_M3r1z3s0zvQ9tR8)dIQa_0X{vT--m7sTZ#s#{ z*Z~;Lb1zUIqz5k)t@TRK2Q-Y;?ODsOTi1Euf=+5 z`j1vT3A~&p1huu`%M-J@4Y<|8TH;}m4`u72?a1|Aq4!lb77vWxG5K$jDKBiI9J;cI z-m$1a>S7=LY~dZTEo_p^mMPDVYa&P;E~HXp$I=GpyQ20bTDd9MADIYS-U z9)h>M?hLjl+;}l11$H`?t=%9L z8e%a%XqaL$E!_A(?bMz#Pq%h(Xd6A=6f>q8BNdO+tED=Ke?0l z3Guk6ABA`=T)IBPh3w|3AG0qn{_!S69a6vkxdq$0>26pt_Z*Gx)Mubdnd_&_j;`1w z7TRS+uE#~1RK@@k~ipjqqxz*3ADWjvPbst>E0?PM znO?}6C)m;}kXx~~U?uy>5fzKG+}Bk+u&&K>*93g2T4S^){*N80WIf;Ktl`Ez4UgOf zl9YgOIsREMVUmMgx&=t&!g@vu1n@_0K7rWo)8L$9 zJuD)h2I0mj=XW4yOCKi_(+5aPf#$)Eayw!rsQ3!HONs}MCZC$IR8gGI9EVaAY9@HW zBC%s~N^{nVwI;kWa{TmmO>b>z%DqYqpO{YNmrBpw)s}Y;M@ncuR&Z3+fRODCj)e)G z9FT}8udB0Xz!?0;*ROn+)kX{1jA(L{Ka3YKmxeLFKTaOsMq0Bq1j4pXA3Nw1CCyuN zCOo!kxDtu{K>jrp@NY*C$k;{1umFHN7)LSP!>`%%SLWZYqq zYbE3otZu8tN~6#u*^zc$_+$byOls|H2R9k?aG3k6e{(VW#vc#af2{4T+1^Ghc&||v zqCIXjvFzGbh!+XHW96=VlVxmLU|MJruwo`LSa1B95AUFsu2D4492;~Shx_&nP%_%< zBHvFy{LwpUiS*t1LqB}3eY%lV-2QnRuBRgT7EksS6vhgh+hRkv%MdbJ-US z=hG0Y6PAaGYj%hV%NVB8rLCjtK&c3R@|Vs6b zKlRuRsA+0TijF93wo*EM@D!`+o^laRD!L&?j1X?z#?^03&qm%b3B~2KIwfqr#5T{2 z8XScYQsdoT(&xW}l%{5czA2u{UR>1r*7$6)<^K9&H_wb`f<)+eH~GIw<^bmwRb$Bg zfgzgVH_5*@)IX{Ib8|JONRvegki;NC>i`j*3PoH^Gb0{;3fu#B5U8hysOfGDR}I9}V>TPKRt+i&Ej zAvOiyvWxPht`xm}794}cF6+hi$OYQWwkniuxYel{)-<~uP@?R6~ceXH2eqN&&WsH`@W*%79+6#a}emP`U?KZV%u;*X4T>|VC`1^(R4bqZZOpi1AM3zGn;=+!%cCuiyRc2dSe=l;$&bwN~e?3 z|JCiF^e>+v4W8~5{@VeJT6#IBD{>h#4T>Y%Bf&Mz$KpOs#=c#T-vv+*10 z#8pO{o-%uU4w95pS5d4>d1_v2ov~FdCt-pPoL%XsSDa(Om3aAf6~SPAqoNL*)&9$< zx1bhRfk47=>&!)`9Z_Gu77Z#n=+*T&HAIS=kickRC~(c>LrQe zy|oA{qmAJoLA|s;8He_PUEexn>)Ixv3}GAbf5@7LVVK0aK?V5Vk{^c7KaX$>zyB!! zUPoV7+kRsKfN-qtf1>}=-mb&1%Ta&B|G@nIzlc-U4O|~b{xX1yU?ced4D%nu$#pB& zJDMxq1Utb-%xK%j{8S0zYe^f4gUt3VU*Wvx$!#qdX)bS?!suE o81Vmy`RjJB2h!hm%0d4%taLPRG3p@zK!`bIFnN6cSNH+`4`~+C4*&oF literal 0 HcmV?d00001 diff --git a/result/templates/room-wise/A-101.xlsx b/result/templates/room-wise/A-101.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9fab134a5f40aaa8e3dff330b6a8316d3a7aab17 GIT binary patch literal 5684 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 literal 0 HcmV?d00001 diff --git a/result/templates/room-wise/A-102.xlsx b/result/templates/room-wise/A-102.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c6c4ddaef18d3cb8c2476b4abcec247a21844020 GIT binary patch literal 5641 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 literal 0 HcmV?d00001 diff --git a/result/templates/room-wise/A-103.xlsx b/result/templates/room-wise/A-103.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0289c41abd474c3b579adf85c49d9592afc3cca0 GIT binary patch literal 5468 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 OyUSs#Iq`4#0saq`RCsy- literal 0 HcmV?d00001 diff --git a/result/templates/room-wise/A-L01.xlsx b/result/templates/room-wise/A-L01.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..249958c2ed7a6e6947859635e07a49250f13f574 GIT binary patch literal 5622 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 QAi*AT*p{CEyZiwE2jDoZ2LJ#7 literal 0 HcmV?d00001 diff --git a/result/templates/room-wise/A-L02.xlsx b/result/templates/room-wise/A-L02.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..83626f44c2a0163f8d9957bd707a0a18a50b1634 GIT binary patch literal 5621 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 Qz(SnTh-yCnTYiB50~QL<7ytkO literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25021519-002.xlsx b/result/templates/student-wise/25021519-002.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..893be021d66e7665f6204b8f62684d5990759a4e GIT binary patch literal 5677 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 PkY6ceIiLS6KfwP1pW)FI literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25021519-005.xlsx b/result/templates/student-wise/25021519-005.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1f54fc69672b32d41308e7eaa2a1342960a0755c GIT binary patch literal 5677 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 R0RSxIR{~ki=YGo%@PD+4?IZvI literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25021520-001.xlsx b/result/templates/student-wise/25021520-001.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..5e20a9fc05bd963815cf40e5cdc93f6f8c25befd GIT binary patch literal 5676 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25021520-002.xlsx b/result/templates/student-wise/25021520-002.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..c97387da7eb6e93034785211b85425df3e064d57 GIT binary patch literal 5677 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 T?Gge2_~=sxUC(EK%Mb8>7FXIA literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25021520-003.xlsx b/result/templates/student-wise/25021520-003.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a8eac05671916272240acdc7aa3092a606b5b898 GIT binary patch literal 5676 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 R0Ki3^QmA@9{ab#3{{!XU<-Gs^ literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25021520-005.xlsx b/result/templates/student-wise/25021520-005.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..dda79bf6955fd346cd83022283c90818c8960eab GIT binary patch literal 5676 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25031519-003.xlsx b/result/templates/student-wise/25031519-003.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..11f5ee9bc0c6fcfc5da3f51dde33e137490e2edc GIT binary patch literal 5642 zcmZ`-2Q*x3*B(Tdm>Dg4CqlH*i5jAg79vKA-a8pYglG{&i%y~&ZICgdL@z<~-a>TI zOO$B;%|;E z%wg$bq2=!4>cRKa)s+|S0) z3=tp^`?^qFzCOaMWaHJJDF3WdLYt#?!9Yl&f|Id$hK>lh>dP+uhD=R7i5vIojcyNx zZstn2%ef_PBYrKF)*mU1&yiK_U|yXY8vp?PI|U0DcdOqy^u}qcwekZy8zYuJf6gCm zmLI2T=frIeT!1M%!wiOlmvU#TMWbM0YxuzZxVnHB$CAp$^;*31YOV}8)RCg`TVZz+ z=E`wmsQ}va1KkGsZ852mR3*8dH~n^X=$9F?%8Doq*bwY0$$=rJ;Ux}L;JY8#sQTcg zl=W96{-Jib6FKdHEW2?y8!N9bg?`>M!h%HdPn;Obeg=B{)O6eiNOBg~CXR?jFHbBP zO$D}|9Sl2|RP!saiQiF2W`jKUKRr$Aa_PNjJ&N`6(nChrXY?g{xK&g3Zgp<{YTdc( zm?0v0@HUDs$e6hCQt=q~Pj*s_(piCc06;n?06>Oe2kyw{X=~+V_4ireH$Pj3FpnuQ z@)tYE0l3YP6LE(~AR0yHVdp)KN(tVAGKPQ*q8xoJV}k=4ABq5b5^rwBY1F1k-QZb2 z>r;HVx+dmxu+3|}78;(g4>z0Sn;xsH=KD7PSda}Q$4^~=+-)MtQ#YwHv;(w?`FD|l zTW5ma5U9b)d&Z3BVKjWKV?R*Sv--hyj#;-KTAKNr@Yu=@JkmCFF=aw6GeS-%dLBht zA=C})_0K=7udM2111_w%E+t@n}LQ=URjH1msla4~ex&>L5}8}r(AnJpQI zj*Yo;gs2?50n3S_sj}Goq9|R>;bZ@~jWpYIq9~Z=u*0+2;po>Lr33Jr4SSklt!1w} ziU&M5>^L|t${cdnDQ)GI7B_ss6jjTz!%P4JSMRZ}LpX^hT)(^$XeR0FX61}_4YtK! zgDyMTZ;aUuQ6~y1xo5=S-U5iW4XSHBN6Mii=3C;1jAF+6xvI2i2vWZU{(Kn3+&+W6 z_?cAKl?(CB@R#UwNC>bi#wysVOY4t6_gGtcUl2d8A>Zd(&qKI(#tM5H#_23c<}N{J zBmcbr=qNUiU9f-WlxPDgWy7eSSZ>_kzmys2&RREnWZ-|K`Oukl9MSZVWjsNNP4WGg zd$mg-u_~3Df@CrT8KKGcT6EaCgaV0Kp(m)063{%Ee{}=Fm$|6$<6@W8`;W5>RHlMY zfJ!tA=^iT{gN|qTc}jyvdi66oNd^>HNw?>OiiCOE$Kdap_Da*G=*hsn3B-7Ep-F5U zV1)P!4P~-R?!2kX^kLcE1U|N3s7EAC;Jc?doVkHc4`jqXAM=0vijRJ55IwZQ*ws2os|hpjSKPKv3Ts>`=#>{GM;Nf{C(5r zg{^ev-qx>4wqRuHlY6X`F=~My<=8%*zvL7D=aUp{X&ss6Db3S=DrLHg>LrFKRJ*JFKqoX*afqoNR(y4ZGW3v0+DOIGqn~}C z7d|^O_FiJmS*kRUypB&otTQU5AzsxsziF8;?@8*{AV69`bohvwI)# zUm>-z_jUBl1YjLF+%ehD)gu+xTvwBfOcw{^7N_&As+^Hr�YPbi`ZilF4j}yT4gg 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25031519-004.xlsx b/result/templates/student-wise/25031519-004.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..139e5b3acfdb494c7a6e12247c9bf8aaa0613138 GIT binary patch literal 5642 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/25031519-005.xlsx b/result/templates/student-wise/25031519-005.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3ef170a8ff9989a8fcdfd63081a023a57f5f19c6 GIT binary patch literal 5642 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ð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 R0Dy!1Nh8bo;&1r@{tw7j)6)O| literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26021519-004.xlsx b/result/templates/student-wise/26021519-004.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1369ccfa10aaf2d490221af0613a3e54e17a4b9a GIT binary patch literal 5681 zcmZ`-2Q*x3*B)hv-ia=H^xk{#1YsDR(fjDV1<^av5}hbRqL+vsgwcr-qJv+1kL%A*8-MRc+oHgN^SiL;hXlvcNJ}oceXi9MvB;yJ@;auL&njgDFT^$~vO1t{| zf1oVpdQQ*WoTGTmwdumoH-sZI$8aSzI#Lu@v>8~(yAqzzK!I0EOM}u^>@pwrj2Bzv z<9bW|?hKcboi{v7&i9Sj6Xw2kkbqbN3vKl>6(;`I04Aw;B6ZPhcHmvS-YAJ);r58z zwGFTvy`4F?py{a1(v=qBL~zUwI{ryoM`*}Tah2*$9j-NXcN!G(1mX097}ku{dX!W$ zz!U0;5m0%5O0GCrO{o`7;E^u%7EMvzYZ4G+6_aXC_%rj^8mA^gwpWZ~<9@ZIop;#5 z(GI|cl7VpgqcoJg?dP`wXPhQT{0Te@7p5{@_|P+L=kEYzfR6?M~$7Y=PS$yJNn(Juc{=8<$$4DT{LtX(pdXHJAVb)~q0O%759ws8}TaJi- zpzcRJI%l#5rr>6n`_{O$Vi4uvT=Y=c#v<5^!(L`W|B11iIbGuxE&m0{sD2`(1c}H{ zmbopq@#NBZ;Ck`16a>C2M$H%Q%0mgF3mtc>*wiwP{i5I7|K8C~+Q4aOa!MsEVmLSh z*sgkBGEMS;4@X?A05t9sbl!jPGGS!VOTdLwU<-c*b5*eY1)#RrUQW7edaz+p=6mozVgnX_(a{YB5QI4`Y!sM;C65T zbSCEmfbO2 z${$b=EH>_x5$aHlRB_Oe2T#9-?rgrSNT1h~8+Y&Iz&QTJ0Je-_aTO=>6r-|}3xc1Y zrBRhsmTs+87jP($9DKBdX!+4-ZA!55&^fs%X~phs#Hp9WIM{Y zN{^x(I*w>yj7hn*y#(xXQdZT!u6nlVBZwk%&RC{(JMs06eL!xK-ojH`S?ybIvcrO~t z6$~#sZ2KWuG}R)^5Ny{o9S{Dj#p9JTIT!~tc|r* z0=&5kEAo=!fL}_Oe{CGY;+JpnRR7kT@vezkMD0hzM|UlnQEYKLi8ShF-&fRvzs^m4 zHW|uz^s?n!DdgUvxU?56i-{EGq_$yB>!!H%UG5I}QLKx8LTwAqF?9L5Fgf|_YtNJV zl0%6s>Y><^;z!?$qI2MV@-hB_<~eqmgE|7lF3vTK97-(~t@Fnm#A`MdoUhO$VNZ}x zbe~%Af(KF9Q;LH$5)^mbzh;}5Z%n3bER{o=Tw#xW$zAAmMSC4`i0rCIK0_LMo>Ie~ zf=}w-IZ8H?Xu)rdYCpWhCeR|qB2=-?AS+iZJ|)+C_my3>|EWl~B7ZYs_QTGN?I8~> zy;ee>W;|rRwhqy%00^&L`N=9LHU zSMwjH@^vBSD;rm?>EbFH`The0NM4G_44G7Dq-1=XI^WY$(1?)6GKLk7kRxo$slsxu zu)0pL+a8mQ*Gh?oDsn_dYne?k5faDMV*?+Nd2SpYraSs3%wKVYyF}^p+02rS$UpCq z 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 TDFgs85I-qIIbZoLKfwP1pUl-f literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26021519-005.xlsx b/result/templates/student-wise/26021519-005.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..0dc3de6f2273c35239c6fb98816e17f929a6052d GIT binary patch literal 5679 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 S2>}3H)K3ak&gXy25Ac7lk>uq7 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26021520-001.xlsx b/result/templates/student-wise/26021520-001.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..605adcfb035ba626c2b23de4ab3a035a635b8418 GIT binary patch literal 5678 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 S0f0yFpE$gn&;OPm;Qs*nDc__3 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26021520-002.xlsx b/result/templates/student-wise/26021520-002.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..9364a3c976626cd7c5f5ee56a8b60d6fee5eb979 GIT binary patch literal 5680 zcmZ`-1yodP*B)9aVJPWFkq+sGp+UNal90|Jh7N&2O1eR5kQk8e29X#Vq$Lytq@v@ z&j-qU&Q}a94e6jG&P^vi-a$O6S;n6d!yoga@;3ddc$PzAYA7BQ($b*y<~z*=hx6bH zjjT6T?@V*b+jt^UWxU^uXtMOK8}N(NJfbaMqQWNl>dPz+cY@WR9tD$$YTVP_F<2cSF6zy z$N-wu;~x!*`{FZ2$tnsx@ca(7sJCeHs@{$)lL98edhQbAo{4pHg#GkZfkzicp;?s z*U6NFX(P8Rlkj6zcs`-Wantj(A(zqX-m?TxPhEJFea=`a#I2EZbboN~XYaui#~cCC zlh?6ap(Z$;H=uKjf3uTeoXtpp2>@h20sx4R>_8p4JZ!CjD%a zeQB2F$hzZ8$NsB@6$xv^jtDhxh%+~(0bS6TOUb6XQRHWxp1v-78%aHf!HG%5;LxFf zWQ-Q2vw|s-d%Sp}A~^)mM8@HN2Tc}DXeiy6#Z0bB4`G zt{uyx>nexB9a38v`Hfv)AW8j})D#`Sz}0JZWD+gal=Y`)GQ}tA)@5nqLxb(jK> zp+Y|2oB)wAhvXo;a+H$&)+|KQ6=Zw!O-a(6n#`DM8~gpEUyR`Aut(0KMD8L~HZuN* zv$KREW?sa>CHAhmm<_F7YPAUhv6&m=&e*zqW)N`pOu?CPuB@w;VJ=yo3H0UzN6RLm zP`wf!FOlTEoQQOL4Jy>a`#h<65f^m>6@+U<0gWB^KCH$@o|n61itFbYC@q9t5Xe)k zXG6X~CLDiZ70FMW>9#Euq#2N)q&-~afA^HVe-@h3byS%xMok19O~%2Lj!0u-0hS2| zswooPuoW%bWKT&QCUY_UR8DwpSIb!9!7{qdN6{@0r}Tu`PKx>7U|eQD#imN2q(-%& ztd*w^vui!1fiuNrR`w9G$w*j`3sAV%lZG_7m4%rb0S6|a>XUVZSB4c&lO)VP?2RUP zj?E_E6DFDpBA*?LjwkG-i4aoG+|PG2K)=p4?N#dD4jq1R-4qxx!{^8zcdjr^ro8!p zr9^UvmmjMj)9`+Kn4bNccQAg5QW{=tjH6~6i7j6!wqWW&n?_ZrAIj~-f?!YiMQE3B z5N80Q=%D$Bc-~~AAY*_{_f#}^Mcx_Q_p6F$VUC~kv8BHI=!ZcacoOTp@SCo^Yg>uj zqy3+sn8M(hh8&Ef@hTy;(o9WP(H{?=^xfaK0yEzq)|s*vi~{D$P&)5upDL%!ZNZx# zH;I8aci?#*66}aeF|)6Aqd0uBjqWPn8j?HeS%j2-)Qq^Q(+uN^+K44mH+a9Le){Xo z#A}nWh+8{NwuwTf1I?)=XGugTH$9;ldrB+brT22DA4;(<{0Y4|AYI?->-@yTudm&j z)ddG)snmm!$NBW%^CHp_y|OSLKeKe3lmQKXVkgH6CU*Ho^QO5YcH%WFbB?!IFX5V~ z$6C7PJm3K|w)lL1)fmvW>(?}6vyF+wjm2W?dS^JRH@OpomT-?+NsSoz@%E}=Rp4p7lDnXFhj|Abt-<13p|pRQ0Rh_3;d_ONZ^%b=UO zb`#L6;Q=adbE|NfuQiWN@$o7L?tOM}q#rl9KUmYJ5+O$0R}-O&*dvL=CknrV38~ ziPL_J+ssNbRw*GI1Y&;~p>8_K3?z=K#>Jo~bKf{PNV4~infu8e;uNOCYc)gmQTA20 zIG?-hybkk8)dCAn_~N?GXe&hri@8d#uX7H^quWK(Y4JKTaru*ij5V5C7$nQLsRvYX zYcNZ5$-64-x+t=OX8MJQUA8c=J0L15n6TWUqXqu#k~v$n&hIFMF6(M`vG8np4cC9V z+^EQkjZjhr%bzw8(=rD9gWv2mu|;KZP36D>53WzJ!3l2O3!zmQD3gM3Cb~j67TZO7 zMruoPaT?F|43D2G0mGChqd}lxQyp7u>E-~hx~DJh^L}(E%D)>3zTGTC6dC{!iVpxh z{L?_ZUECcYw$|1j5U#&&e|3>|eKp7;9YOn7eQptEm>g}x*6SMaqB|jG4 zhI9s3lo_X>02J1DIg0TDQ#9;o3+JiJjdTwW$Zr{V!K_z;n&W72WjAII1v@HYEGlb|mUpXapLlFw_f#8OW&l(l6;ir5GL@->^>eBgTc z%2XH7g|7_jY6ptdXdAxS`#r8a*Q~a}Ev~dH1~pEA=zy1s`T1LvfpsEzKeusAkz|E| zj_t8ur+qj-VhE(mrinGK17!K+B422oTo@(z)<44&bCj%k!~!K5VI;O4_+ZnP`l*i+ zY91?4P3JyzHdl&WT5_o+ALbJpU`IJXqliOqXc{tu>#jN+bkVNdheBtMCPzZ&%kfql zMFfuF!6tQHA8d-T-A+oNA3VR=p_)4MgGyP58q$De3}zEp=5{BqQ|2yid9RmP-e~Z7 z(_`o!3hk$Ra&83S?T>{Xgxc<@fGY8>bgqf5M=5985-JF_TuPMWq?;KLOmMcr+YlekLhWxu*};MAxYuN2Wv!q^+dLNYH|;56XAbBLzlp2mfHfOg zg5!zbu}t5v(i5&>N`z{k3W;W%;J9YoSL_DfgngV)D<}Z%*dD^-OeX~g6Xt#<%8M*&mLMev zTjfw&$?6e5Pn9D%93>C@C^hX%fMFy5T}2 zF;>+**Tf_aM z%K+$3#MZ78`X`@@Y^@dE=Lo-*wRty1q-3sKhMznskko& zb`k@x{drIlFXWeJVK3g2{-Rm+8>^3v<%7@UPL*V9ZS7&3&emkH=?0v&`Q}W8PQQ@@ zsl-~zkjm}6TY`Ervnn~bK4}u9iIsuVRd|q{xP#eobVVI%ICS^oj9qvTa-YC5a}PbV zwKTqlAI_`Yvtb*`Y$!DMcNwwduD~Fh)HK45HKAocEe{FMMoV$Z4o#5>o#4a$a{JCH za8p#+VE}U!w`{4x1GB&mLhbXKGm*-ND{EIRKfhK_pwMT!1!JRacZPEAA?ZofV~}<8 zbjm;pPp-5&IB-S31uU4jcYQP+P%FzJq!QwugbO)MOM+#QhZ#N(7L2@n?breyRI+%! z8{%!%`kKc101XHHpzYD(b?@@=z`!iZK_=zW>=J%(N~OgHV7<#teGQ|yBPHdHle!re7-Y!S7#4Y+FGez>iA8v zQD#CxiLb%oTWbYTFzEbfyYSt`O=_*0p+?eG)_pRF`ys@g{!{sjm;LsYcsea(I4Mz; zuvD`|9fU{8f+u3py6MXii9NpW=tka)TQrAUy6dZir_bPEh--M}BmGhzUye+y19K=x zW(lo9?VNM_%j;`f?}G~bY-x*gQ7R`WyvNXqT))E6L0CoGDA(y&q>X_sz)K_wzF5M~ z2(HQ%<@Wk@ESUM;iO{o>CeLO;FW{2RfBWLOcjmZph3ZaRu@ZR3%vRxz{TF+QMD_R^ zboV%O3Cvo?;OAoLs3U{W=VG_o5`6r$FP|^G(6fs8Iif+kVJ(~ZWdOP-kuI-V`Ry!w1~ghGrWDv55HL69DCu3Lp9~@tao$#ZWUeivz*K zNQPgwmSSrmv8V#x!K-6vkdNPq(7E5G3+&+yBs}gRNRK`frif5H2y2+JL#MY_gW6nUde>csvs8*^jq}Yg%dr}=AO1@(MOp$W z)Q>ct%PA6H@MkdYIcR%1M2o|q5lwsNXs>0KidvN(dRc(X{3(Em{7hvg75HfP!qR>aHh3Hk;w(je%D z(d-$;3u3$2h(3pxIgQhbk}D;w^lkegN0L6_+Yfm?v58fCH=swM_(oCFvrj6h(26?P+6I7+;T$Mg5O96<*|>Thg`y`A4SoG{5d zV1Be3-a7ykg6pC<$2Pd1*^^bQ8%AKZO}5(;BtCADp69d5{hpDZEp{X8;kj(*FLeE0 z=*$F@PBTWft-H8sDKmptl8s;d#*`VgIyonAooGxfT!K4gOD zpsLZ0`&FyBu27GgJM*S>yiX!IGC>5gXZipBPf*ejD4JXHqH^>^>mCV!JFZHA1S+c0n%XhfBV8DCPne)AKRQkIvkNqA*i zWSO#EDJ5dm<-4%{kz96>0z;&t%eq#KidMyNDE<4>yBKm+ucLb`PUJQF+p+!2c>M X4HXQeQ3wFsNB$&`^?d2K`~d$45E$ZS literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26021520-003.xlsx b/result/templates/student-wise/26021520-003.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..17a7bb825386b2c4f2dcb872a5483e55482303f8 GIT binary patch literal 5681 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 Ukxn51fQ9^tBkTG6Z}|cK4=9`1x&QzG literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26021520-004.xlsx b/result/templates/student-wise/26021520-004.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..1e6fb5630f2b501b17388c7960e51d35ada2bc54 GIT binary patch literal 5679 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 XM;#5}6aoNPh@Ui~o-h5DAK?E05Y^f* literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26031519-001.xlsx b/result/templates/student-wise/26031519-001.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ec5cf0f0b2bdabdc5a959c00da2011bca962d9a1 GIT binary patch literal 5639 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26031519-002.xlsx b/result/templates/student-wise/26031519-002.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..d72aab36794bf1ed124a02b542c149a40159a328 GIT binary patch literal 5639 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26031519-003.xlsx b/result/templates/student-wise/26031519-003.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..3f20c01450328729c13f5fff7f0c97534be9cb6a GIT binary patch literal 5640 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 literal 0 HcmV?d00001 diff --git a/result/templates/student-wise/26031519-004.xlsx b/result/templates/student-wise/26031519-004.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..ccd07b6a8eb78f11bcc84bc3cc4244b5b5d9183c GIT binary patch literal 5640 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 literal 0 HcmV?d00001 diff --git a/result/templates/teacher-wise/1003.xlsx b/result/templates/teacher-wise/1003.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..37fca81f0f5004a7d1e9c02e4117d4b20463e62f GIT binary patch literal 5463 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 H`~d$4o*Z#C literal 0 HcmV?d00001 diff --git a/result/templates/teacher-wise/1004.xlsx b/result/templates/teacher-wise/1004.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..53eb77856fb86edaed5122eec3535163ed8479c6 GIT binary patch literal 5563 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 literal 0 HcmV?d00001 diff --git a/templates/batch-wise/batch_wise_template.py b/templates/batch-wise/batch_wise_template.py new file mode 100644 index 0000000..f887bcd --- /dev/null +++ b/templates/batch-wise/batch_wise_template.py @@ -0,0 +1,49 @@ +"""Renders one timetable grid per batch.""" + +import sys +import os + +_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..") +sys.path.insert(0, os.path.join(_ROOT, "app")) +sys.path.insert(0, os.path.join(_ROOT, "controller")) + +from xlsx_grid_helper import build_grid_sheet, new_workbook, save_workbook # noqa: E402 +from template_controller import TIME_SLOTS as GRID_TIME_SLOTS # noqa: E402 + + +def _sessions_for_batch(sessions, batch_code): + return [s for s in sessions if batch_code in s["batch_codes"]] + + +def generate_batch_wise_templates(sessions, data, output_dir): + written = [] + for batch in data["batches"]: + batch_code = batch["batch_code"] + batch_sessions = _sessions_for_batch(sessions, batch_code) + + by_day_slot = {} + for s in batch_sessions: + for slot_index in s["slot_indices"]: + by_day_slot[(s["day"], slot_index)] = s + + def cell_text(day, slot_index, by_day_slot=by_day_slot): + s = by_day_slot.get((day, slot_index)) + if not s: + return "" + tag = " (Lab)" if s["course_type"] == "lab" else (" (General)" if s["is_general"] else "") + return f'{s["course_name"]}{tag}\n{s["instructor_name"]}\n{s["room_id"]}' + + wb = new_workbook() + ws = wb.active + subtitle = f'{batch["department"]} - {batch["program"]} - Session {batch["session"]}' + build_grid_sheet( + ws, + title=f"Batch {batch_code}", + subtitle=subtitle, + time_slots=GRID_TIME_SLOTS, + sessions_by_day_slot=by_day_slot, + cell_text_fn=cell_text, + ) + path = save_workbook(wb, output_dir, f"{batch_code}.xlsx") + written.append(path) + return written diff --git a/templates/department-wise/department_wise_template.py b/templates/department-wise/department_wise_template.py new file mode 100644 index 0000000..f8d679b --- /dev/null +++ b/templates/department-wise/department_wise_template.py @@ -0,0 +1,54 @@ +"""Renders one timetable grid per department, aggregating all its batches.""" + +import sys +import os + +_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..") +sys.path.insert(0, os.path.join(_ROOT, "app")) +sys.path.insert(0, os.path.join(_ROOT, "controller")) + +from xlsx_grid_helper import build_grid_sheet, new_workbook, save_workbook # noqa: E402 +from template_controller import TIME_SLOTS as GRID_TIME_SLOTS # noqa: E402 + + +def generate_department_wise_templates(sessions, data, output_dir): + departments = sorted({b["department"] for b in data["batches"]}) + written = [] + + for department in departments: + dept_batch_codes = {b["batch_code"] for b in data["batches"] if b["department"] == department} + dept_sessions = [s for s in sessions if any(bc in dept_batch_codes for bc in s["batch_codes"])] + + by_day_slot = {} + for s in dept_sessions: + for slot_index in s["slot_indices"]: + by_day_slot.setdefault((s["day"], slot_index), []).append(s) + + def cell_text(day, slot_index, by_day_slot=by_day_slot): + entries = by_day_slot.get((day, slot_index)) + if not entries: + return "" + lines = [] + for s in entries: + tag = " (Lab)" if s["course_type"] == "lab" else (" (General)" if s["is_general"] else "") + batches = "+".join(s["batch_codes"]) + lines.append(f'{s["course_name"]}{tag} [{batches}]\n{s["instructor_name"]} @ {s["room_id"]}') + return "\n---\n".join(lines) + + # for fill-color purposes just use the first session in each cell + first_by_day_slot = {k: v[0] for k, v in by_day_slot.items()} + + wb = new_workbook() + ws = wb.active + build_grid_sheet( + ws, + title=f"Department: {department}", + subtitle="All batches / programs", + time_slots=GRID_TIME_SLOTS, + sessions_by_day_slot=first_by_day_slot, + cell_text_fn=cell_text, + ) + path = save_workbook(wb, output_dir, f"{department}.xlsx") + written.append(path) + + return written diff --git a/templates/room-wise/room_wise_template.py b/templates/room-wise/room_wise_template.py new file mode 100644 index 0000000..8d5832f --- /dev/null +++ b/templates/room-wise/room_wise_template.py @@ -0,0 +1,45 @@ +"""Renders one timetable grid per room.""" + +import sys +import os + +_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..") +sys.path.insert(0, os.path.join(_ROOT, "app")) +sys.path.insert(0, os.path.join(_ROOT, "controller")) + +from xlsx_grid_helper import build_grid_sheet, new_workbook, save_workbook # noqa: E402 +from template_controller import TIME_SLOTS as GRID_TIME_SLOTS # noqa: E402 + + +def generate_room_wise_templates(sessions, data, output_dir): + written = [] + for room in data["rooms"]: + room_id = room["room_id"] + room_sessions = [s for s in sessions if s["room_id"] == room_id] + + by_day_slot = {} + for s in room_sessions: + for slot_index in s["slot_indices"]: + by_day_slot[(s["day"], slot_index)] = s + + def cell_text(day, slot_index, by_day_slot=by_day_slot): + s = by_day_slot.get((day, slot_index)) + if not s: + return "" + tag = " (Lab)" if s["course_type"] == "lab" else (" (General)" if s["is_general"] else "") + batches = "+".join(s["batch_codes"]) + return f'{s["course_name"]}{tag}\n{batches}\n{s["instructor_name"]}' + + wb = new_workbook() + ws = wb.active + build_grid_sheet( + ws, + title=f'{room["room_name"]} ({room_id})', + subtitle=f'Block {room["block_id"]} - {room["room_type"].title()} - Capacity {room["capacity"]}', + time_slots=GRID_TIME_SLOTS, + sessions_by_day_slot=by_day_slot, + cell_text_fn=cell_text, + ) + path = save_workbook(wb, output_dir, f"{room_id}.xlsx") + written.append(path) + return written diff --git a/templates/student-wise/student_wise_template.py b/templates/student-wise/student_wise_template.py new file mode 100644 index 0000000..d07014d --- /dev/null +++ b/templates/student-wise/student_wise_template.py @@ -0,0 +1,54 @@ +"""Renders one timetable grid per student (same grid as their batch, labeled per student).""" + +import sys +import os + +_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..") +sys.path.insert(0, os.path.join(_ROOT, "app")) +sys.path.insert(0, os.path.join(_ROOT, "controller")) + +from xlsx_grid_helper import build_grid_sheet, new_workbook, save_workbook # noqa: E402 +from template_controller import TIME_SLOTS as GRID_TIME_SLOTS # noqa: E402 + + +def _sessions_for_batch(sessions, batch_code): + return [s for s in sessions if batch_code in s["batch_codes"]] + + +def generate_student_wise_templates(sessions, data, output_dir): + written = [] + for student in data["students"]: + roll_no = student["roll_no"] + batch_code = student["batch_code"] + batch = data["batches_by_code"].get(batch_code) + student_sessions = _sessions_for_batch(sessions, batch_code) + + by_day_slot = {} + for s in student_sessions: + for slot_index in s["slot_indices"]: + by_day_slot[(s["day"], slot_index)] = s + + def cell_text(day, slot_index, by_day_slot=by_day_slot): + s = by_day_slot.get((day, slot_index)) + if not s: + return "" + tag = " (Lab)" if s["course_type"] == "lab" else (" (General)" if s["is_general"] else "") + return f'{s["course_name"]}{tag}\n{s["instructor_name"]}\n{s["room_id"]}' + + subtitle = f'{student["student_name"]} - Batch {batch_code}' + if batch: + subtitle += f' ({batch["department"]} - {batch["program"]})' + + wb = new_workbook() + ws = wb.active + build_grid_sheet( + ws, + title=f"Roll No: {roll_no}", + subtitle=subtitle, + time_slots=GRID_TIME_SLOTS, + sessions_by_day_slot=by_day_slot, + cell_text_fn=cell_text, + ) + path = save_workbook(wb, output_dir, f"{roll_no}.xlsx") + written.append(path) + return written diff --git a/templates/teacher-wise/teacher_wise_template.py b/templates/teacher-wise/teacher_wise_template.py new file mode 100644 index 0000000..46ae62f --- /dev/null +++ b/templates/teacher-wise/teacher_wise_template.py @@ -0,0 +1,45 @@ +"""Renders one timetable grid per instructor.""" + +import sys +import os + +_ROOT = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..") +sys.path.insert(0, os.path.join(_ROOT, "app")) +sys.path.insert(0, os.path.join(_ROOT, "controller")) + +from xlsx_grid_helper import build_grid_sheet, new_workbook, save_workbook # noqa: E402 +from template_controller import TIME_SLOTS as GRID_TIME_SLOTS # noqa: E402 + + +def generate_teacher_wise_templates(sessions, data, output_dir): + written = [] + for instructor in data["instructors"]: + code = instructor["instructor_code"] + instr_sessions = [s for s in sessions if s["instructor_code"] == code] + + by_day_slot = {} + for s in instr_sessions: + for slot_index in s["slot_indices"]: + by_day_slot[(s["day"], slot_index)] = s + + def cell_text(day, slot_index, by_day_slot=by_day_slot): + s = by_day_slot.get((day, slot_index)) + if not s: + return "" + tag = " (Lab)" if s["course_type"] == "lab" else (" (General)" if s["is_general"] else "") + batches = "+".join(s["batch_codes"]) + return f'{s["course_name"]}{tag}\n{batches}\n{s["room_id"]}' + + wb = new_workbook() + ws = wb.active + build_grid_sheet( + ws, + title=f'{instructor["instructor_name"]} ({code})', + subtitle=f'Department: {instructor["department"]}', + time_slots=GRID_TIME_SLOTS, + sessions_by_day_slot=by_day_slot, + cell_text_fn=cell_text, + ) + path = save_workbook(wb, output_dir, f"{code}.xlsx") + written.append(path) + return written