Files
ScheduleGeneratorApp/app/util/courses.py
T

58 lines
1.7 KiB
Python

#!/usr/bin/env python3.11
import json
import csv
from app.util.estimateGrade import getGrade
# Get all requested courses from data
def getCourses(
data_dir: str,
log: int = False,
log_dir: str = './output/raw/courses.json',
) -> dict[dict[str: any]]:
courses = {}
with open(data_dir, newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
exists = False
for course in courses:
exists = True if courses[course]["CrsNo"] == row["CrsNo"] else False
if exists: break
if not exists:
grade = getGrade(row["CrsNo"], row["Description"])
courses[row["CrsNo"]] = {
"CrsNo": row["CrsNo"],
"Requests": 0,
"Description": row["Description"],
"Sem1": 0,
"Sem2":0,
"Grade": grade
}
if log:
with open(log_dir, "w") as outfile:
json.dump(courses, outfile, indent=2)
return courses
# Writes all course data to csv file
def writeCoursesToCSV(courses: dict, output_dir: str='./output/raw/csv/courses.csv') -> None:
with open(output_dir, 'w') as file:
writer = csv.writer(file)
# Write header
data = ("CrsNo", "Description", "Grade", "Requests", "First sem. # of Classes", "Second sem. # of Classes", "Total # of Classes")
writer.writerow(data)
for course in courses:
courseData = (
courses[course]["CrsNo"],
courses[course]["Description"],
courses[course]["Grade"],
courses[course]["Requests"],
courses[course]["Sem1"],
courses[course]["Sem2"],
(courses[course]["Sem1"] + courses[course]["Sem2"])
)
writer.writerow(courseData)