initial commit
This commit is contained in:
10 files changed
+1537
No files matched your search
+222
@@ -0,0 +1,222 @@
|
||||
# Fake sample data
|
||||
|
||||
mockCourses = {
|
||||
"P-CL": {
|
||||
"name": "Pre-Calculus",
|
||||
"code": "P-CL",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"CL": {
|
||||
"name": "Calculus",
|
||||
"code": "CL",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"EN-CW": {
|
||||
"name": "English: Creative Writing",
|
||||
"code": "EN-CW",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"EN-LS": {
|
||||
"name": "English: Literary Studies",
|
||||
"code": "EN-LS",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"EN-C": {
|
||||
"name": "English: Compisition",
|
||||
"code": "EN-C",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"S-J": {
|
||||
"name": "Social Justice",
|
||||
"code": "S-J",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"S-H": {
|
||||
"name": "History",
|
||||
"code": "S-H",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"S-P": {
|
||||
"name": "Psychology",
|
||||
"code": "S-P",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"SC-P": {
|
||||
"name": "Physics",
|
||||
"code": "SC-P",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"SC-B": {
|
||||
"name": "Biology",
|
||||
"code": "SC-B",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"SC-C": {
|
||||
"name": "Chemistry",
|
||||
"code": "SC-C",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"SC-ES": {
|
||||
"name": "Earth Science",
|
||||
"code": "SC-ES",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"M": {
|
||||
"name": "Music",
|
||||
"code": "M",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"CH": {
|
||||
"name": "Choir",
|
||||
"code": "CH",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"DN": {
|
||||
"name": "Dance",
|
||||
"code": "DN",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"CS": {
|
||||
"name": "Computer Science",
|
||||
"code": "CS",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"GD": {
|
||||
"name": "Game Development",
|
||||
"code": "GD",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"WW": {
|
||||
"name": "Woodwork",
|
||||
"code": "WW",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"MW": {
|
||||
"name": "MetwalWork",
|
||||
"code": "MW",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"M-WP": {
|
||||
"name": "Math: Workplace",
|
||||
"code": "M-WP",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"M-F": {
|
||||
"name": "Math: Foundations",
|
||||
"code": "M-F",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"BN": {
|
||||
"name": "Band",
|
||||
"code": "BN",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"TH": {
|
||||
"name": "Theatre",
|
||||
"code": "TH",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
},
|
||||
"VD-P": {
|
||||
"name": "Video Production",
|
||||
"code": "VD-P",
|
||||
"credits": 4,
|
||||
"gradelevel": 11,
|
||||
"totalrequests": 0,
|
||||
"studentindexes": [],
|
||||
"teachers": 3
|
||||
}
|
||||
}
|
||||
|
||||
activeCourses = {}
|
||||
@@ -0,0 +1,36 @@
|
||||
#!/usr/bin/env python3
|
||||
import json
|
||||
import csv
|
||||
|
||||
realCourses = {}
|
||||
|
||||
# Get all courses from real sample data
|
||||
def getSampleCourses(data_dir, log=False) -> dict:
|
||||
with open(data_dir, newline='') as csvfile:
|
||||
reader = csv.DictReader(csvfile)
|
||||
for row in reader:
|
||||
exists = False
|
||||
for course in realCourses:
|
||||
exists = True if realCourses[course]["CrsNo"] == row["CrsNo"] else False
|
||||
if exists: break
|
||||
if not exists:
|
||||
realCourses[row["CrsNo"]] = {
|
||||
"CrsNo": row["CrsNo"],
|
||||
"Requests": 0,
|
||||
"Description": row["Description"],
|
||||
"Credits": 4,
|
||||
"students": []
|
||||
}
|
||||
|
||||
if log:
|
||||
with open("./output/realCourses.json", "w") as outfile:
|
||||
json.dump(realCourses, outfile, indent=2)
|
||||
|
||||
return realCourses
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
courseSet: dict = getSampleCourses("../sample_data/course_selection_data.csv")
|
||||
|
||||
with open("../output/realCourses.json", "w") as outfile:
|
||||
json.dump(courseSet, outfile, indent=2)
|
||||
@@ -0,0 +1,111 @@
|
||||
#!/usr/bin/env python3
|
||||
import random
|
||||
import names
|
||||
import json
|
||||
import csv
|
||||
import sys
|
||||
from util.courses import mockCourses
|
||||
|
||||
flex= ["XAT--12A-S", "XAT--12B-S"]
|
||||
|
||||
mockStudents: list[dict] = []
|
||||
|
||||
# Generate n students for mock data
|
||||
def generateMockStudents(n: int) -> list[dict]:
|
||||
for _ in range(n):
|
||||
newStudent = {
|
||||
"name": names.get_full_name(),
|
||||
"requests": [], # list of class codes
|
||||
"schedule": {
|
||||
"block1": "",
|
||||
"block2": "",
|
||||
"block3": "",
|
||||
"block4": "",
|
||||
"block5": "",
|
||||
"block6": "",
|
||||
"block7": "",
|
||||
"block8": ""
|
||||
}
|
||||
}
|
||||
# Get list of random class choices with no repeats
|
||||
# 8 primary choices, 2 secondary choices
|
||||
courseSelection = random.sample(range(0, len(mockCourses)), 10)
|
||||
for courseNum in courseSelection:
|
||||
newStudent["requests"].append(list(mockCourses)[courseNum])
|
||||
mockStudents.append(newStudent)
|
||||
|
||||
return mockStudents
|
||||
|
||||
|
||||
# sort real sample data into usable dictionary
|
||||
def getSampleStudents(data_dir: str, log: bool = False) -> list[dict]:
|
||||
with open(data_dir, newline='') as csvfile:
|
||||
reader = csv.DictReader(csvfile)
|
||||
for row in reader:
|
||||
exists = False
|
||||
for student in mockStudents:
|
||||
exists = True if student["Pupil #"] == row["Pupil #"] else False
|
||||
if exists: break
|
||||
alternate = True if row["Alternate?"] == 'TRUE' else False
|
||||
if exists:
|
||||
if len(mockStudents[student["studentIndex"]]["requests"]) >= 10 and not alternate and row["CrsNo"] not in flex: alternate = True
|
||||
mockStudents[student["studentIndex"]]["requests"].append({
|
||||
"CrsNo": row["CrsNo"],
|
||||
"Description": row["Description"],
|
||||
"alt": alternate
|
||||
})
|
||||
if row["CrsNo"] not in flex and not alternate and mockStudents[student["studentIndex"]]["expectedClasses"] < 10:
|
||||
mockStudents[student["studentIndex"]]["expectedClasses"] += 1
|
||||
else:
|
||||
newStudent = {
|
||||
"Pupil #": row["Pupil #"],
|
||||
"requests": [{
|
||||
"CrsNo": row["CrsNo"],
|
||||
"Description": row["Description"],
|
||||
"alt": alternate
|
||||
}],
|
||||
"schedule": {
|
||||
"block1": [],
|
||||
"block2": [],
|
||||
"block3": [],
|
||||
"block4": [],
|
||||
"block5": [],
|
||||
"block6": [],
|
||||
"block7": [],
|
||||
"block8": [],
|
||||
"block9": [],
|
||||
"block10": []
|
||||
},
|
||||
"expectedClasses": 1,
|
||||
"classes": 0,
|
||||
"remainingAlts": [],
|
||||
"studentIndex": len(mockStudents)
|
||||
}
|
||||
mockStudents.append(newStudent)
|
||||
|
||||
if log:
|
||||
with open("./output/students.json", "w") as outfile:
|
||||
json.dump(mockStudents, outfile, indent=2)
|
||||
|
||||
return mockStudents
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) == 1:
|
||||
print("Missing argument")
|
||||
exit()
|
||||
if sys.argv[1].lower() == 'sample':
|
||||
studentRequests: list[dict] = getSampleStudents("../sample_data/course_selection_data.csv")
|
||||
|
||||
with open("../output/students.json", "w") as outfile:
|
||||
json.dump(studentRequests, outfile, indent=2)
|
||||
elif sys.argv[1].lower() == 'mock':
|
||||
studentRequests: list[dict] = generateMockStudents(400)
|
||||
|
||||
with open("../output/students.json", "w") as outfile:
|
||||
json.dump(studentRequests, outfile, indent=2)
|
||||
else:
|
||||
print("Invalid argument")
|
||||
exit()
|
||||
|
||||
print("done")
|
||||
Reference in new issue
Block a user