write master timetable to xlsx

This commit is contained in:
SowinskiBraeden committed 2022-11-16 17:13:08 -08:00
1 parent 70437a369e
commit 9a03826051
3 files changed
+37 -3

No files matched your search

+4
View File
@@ -555,4 +555,8 @@ def generateScheduleV3(
with open(coursesDir, "w") as outfile:
json.dump(courses, outfile, indent=2)
# Save timetable to json
with open('./output/raw/json/timetable.json', 'w') as outfile:
json.dump(running, outfile, indent=2)
return (running, None)
+28 -2
View File
@@ -1,10 +1,36 @@
#!/usr/bin/env python 3.11
from docx.shared import Inches
from app.util.globals import flex
import xlsxwriter
import docx
def putMasterTimetable(timetable: dict) -> None:
pass
def putMasterTimetable(table: dict, output_dir: str='./output/final') -> None:
workbook = xlsxwriter.Workbook(f'{output_dir}/master_timetable.xlsx')
worksheet = workbook.add_worksheet()
sem1Header = workbook.add_format({'bold': True, 'align': 'center', 'bg_color': '#91c5fa', 'border': 1})
sem2Header = workbook.add_format({'bold': True, 'align': 'center', 'bg_color': '#a2fa91', 'border': 1})
sem1Data = workbook.add_format({'bg_color': '#cee1f5', 'border': 1})
sem2Data = workbook.add_format({'bg_color': '#d8f7d2', 'border': 1})
worksheet.merge_range(0, 0, 0, len(table) * 2 - 1, 'Semester 1', sem1Header)
worksheet.merge_range(0, len(table) * 2, 0, (len(table) * 4) - 1, 'Semester 2', sem2Header)
tracker = 0
for i in range(0, len(table) * 4, 4):
tracker += 1
block, index = tracker, f'block{tracker}'
header = sem1Header if tracker <= len(table) / 2 else sem2Header
block = block if block <= len(table) / 2 else block - (len(table) // 2)
worksheet.merge_range(1, i, 1, i + 3, f'Block {block}', header)
row = 2
for course in table[index]:
style = sem1Data if tracker <= len(table) / 2 else sem2Data
worksheet.merge_range(row, i, row + 1, i + 3, f'{table[index][course]["Description"]}\n{course[:-2]}', style)
row += 2
workbook.close()
def putScheduleToWord(courses: dict, student: dict, output_dir: str='./output/final/student_schedules') -> None:
+5 -1
View File
@@ -2,11 +2,12 @@
import eel
import os
import json
from app.util.convertRawData import putScheduleToWord, putMasterTimetable
from app.generator import generateScheduleV3
from app.util.globals import Error
from app.util.courses import getCourses, writeCoursesToCSV
from app.util.students import getStudents, writeStudentsToCSV
from app.util.convertRawData import putScheduleToWord, putMasterTimetable
eel.init('template')
@@ -92,6 +93,9 @@ def start(
writeStudentsToCSV(students, output_dir='./output/raw/csv/students.csv')
writeCoursesToCSV(courses, output_dir='./output/raw/csv/courses.csv')
eel.post_data('Writing master timetable to .xlsx file...')
putMasterTimetable(master_timetable, './output/final')
eel.post_data('Writing timetables to .docx files...')
if save_student_schedules:
for student in students: