update test development
This commit is contained in:
1 parent
fa3d6d0a4c
commit
cc986c41f7
4 files changed
+101
-61
No files matched your search
+4
-1
@@ -1,2 +1,5 @@
|
|||||||
# Environment
|
# Environment
|
||||||
.env
|
.env
|
||||||
|
|
||||||
|
# Pycache
|
||||||
|
/test/__pycache__/*
|
||||||
+24
-24
@@ -5,7 +5,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl2": {
|
"cl2": {
|
||||||
"name": "class2",
|
"name": "class2",
|
||||||
@@ -13,7 +13,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl3": {
|
"cl3": {
|
||||||
"name": "class3",
|
"name": "class3",
|
||||||
@@ -21,7 +21,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl4": {
|
"cl4": {
|
||||||
"name": "class4",
|
"name": "class4",
|
||||||
@@ -29,7 +29,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl5": {
|
"cl5": {
|
||||||
"name": "class5",
|
"name": "class5",
|
||||||
@@ -37,7 +37,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl6": {
|
"cl6": {
|
||||||
"name": "class6",
|
"name": "class6",
|
||||||
@@ -45,7 +45,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl7": {
|
"cl7": {
|
||||||
"name": "class7",
|
"name": "class7",
|
||||||
@@ -53,7 +53,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl8": {
|
"cl8": {
|
||||||
"name": "class8",
|
"name": "class8",
|
||||||
@@ -61,7 +61,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl9": {
|
"cl9": {
|
||||||
"name": "class9",
|
"name": "class9",
|
||||||
@@ -69,7 +69,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl10": {
|
"cl10": {
|
||||||
"name": "class10",
|
"name": "class10",
|
||||||
@@ -77,7 +77,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl11": {
|
"cl11": {
|
||||||
"name": "class11",
|
"name": "class11",
|
||||||
@@ -85,7 +85,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl12": {
|
"cl12": {
|
||||||
"name": "class12",
|
"name": "class12",
|
||||||
@@ -93,7 +93,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl13": {
|
"cl13": {
|
||||||
"name": "class13",
|
"name": "class13",
|
||||||
@@ -101,7 +101,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl14": {
|
"cl14": {
|
||||||
"name": "class14",
|
"name": "class14",
|
||||||
@@ -109,7 +109,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl15": {
|
"cl15": {
|
||||||
"name": "class15",
|
"name": "class15",
|
||||||
@@ -117,7 +117,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl16": {
|
"cl16": {
|
||||||
"name": "class16",
|
"name": "class16",
|
||||||
@@ -125,7 +125,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl17": {
|
"cl17": {
|
||||||
"name": "class17",
|
"name": "class17",
|
||||||
@@ -133,7 +133,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl18": {
|
"cl18": {
|
||||||
"name": "class18",
|
"name": "class18",
|
||||||
@@ -141,7 +141,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl19": {
|
"cl19": {
|
||||||
"name": "class19",
|
"name": "class19",
|
||||||
@@ -149,7 +149,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl20": {
|
"cl20": {
|
||||||
"name": "class20",
|
"name": "class20",
|
||||||
@@ -157,7 +157,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl21": {
|
"cl21": {
|
||||||
"name": "class21",
|
"name": "class21",
|
||||||
@@ -165,7 +165,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl22": {
|
"cl22": {
|
||||||
"name": "class22",
|
"name": "class22",
|
||||||
@@ -173,7 +173,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl23": {
|
"cl23": {
|
||||||
"name": "class23",
|
"name": "class23",
|
||||||
@@ -181,7 +181,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
},
|
},
|
||||||
"cl24": {
|
"cl24": {
|
||||||
"name": "class24",
|
"name": "class24",
|
||||||
@@ -189,7 +189,7 @@ courses = {
|
|||||||
"credits": 4,
|
"credits": 4,
|
||||||
"gradelevel": 11,
|
"gradelevel": 11,
|
||||||
"totalrequests": 0,
|
"totalrequests": 0,
|
||||||
"studentindexs": []
|
"studentindexes": []
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+12
-10
@@ -9,16 +9,18 @@
|
|||||||
# }
|
# }
|
||||||
# }
|
# }
|
||||||
|
|
||||||
|
# query = {
|
||||||
|
# "code1": {
|
||||||
|
# "name": "hello",
|
||||||
|
# "value": 3
|
||||||
|
# }
|
||||||
|
# }
|
||||||
|
|
||||||
# if "code1" in myList:
|
# myList = ["a","b","c","d","e","f","g","h","i","j"]
|
||||||
# print(True)
|
# print(len(myList))
|
||||||
# print(list(myList).index("code2"))
|
|
||||||
|
|
||||||
myList = ["a","b","c","d","e","f","g","h","i","j"]
|
# for i in range(len(myList)-2): # Subtract last 2 classes as they are alternatives
|
||||||
print(len(myList))
|
# print()
|
||||||
|
|
||||||
for i in range(len(myList)-2): # Subtract last 2 classes as they are alternatives
|
# # Get first alternative
|
||||||
print()
|
# print(myList[len(myList)-2])
|
||||||
|
|
||||||
# Get first alternative
|
|
||||||
print(myList[len(myList)-2])
|
|
||||||
+61
-26
@@ -1,5 +1,8 @@
|
|||||||
#!/usr/bin/python3
|
#!/usr/bin/python3
|
||||||
import random
|
import random
|
||||||
|
import names
|
||||||
|
import math
|
||||||
|
from prettytable import PrettyTable
|
||||||
from courses import courses, activeCourses
|
from courses import courses, activeCourses
|
||||||
|
|
||||||
'''
|
'''
|
||||||
@@ -34,16 +37,16 @@ schedule: {
|
|||||||
running example:
|
running example:
|
||||||
running: {
|
running: {
|
||||||
"semester1": {
|
"semester1": {
|
||||||
"block1": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}},
|
"block1": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}},
|
||||||
"block2": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}},
|
"block2": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}},
|
||||||
"block3": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}},
|
"block3": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}},
|
||||||
"block4": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}
|
"block4": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}}
|
||||||
},
|
},
|
||||||
"semester2": {
|
"semester2": {
|
||||||
"block1": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}},
|
"block1": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}},
|
||||||
"block2": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}},
|
"block2": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}},
|
||||||
"block3": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}},
|
"block3": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}},
|
||||||
"block4": {classCode:{"className":name,"remaining":number},classCode:{"className":name,"remaining":number}}
|
"block4": {classCode:{"className":name,"students":[student Name]},classCode:{"className":name,"students":[student Name]}}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
'''
|
'''
|
||||||
@@ -57,15 +60,15 @@ running = []
|
|||||||
def generateMockStudents(n):
|
def generateMockStudents(n):
|
||||||
for _ in range(n):
|
for _ in range(n):
|
||||||
newStudent = {
|
newStudent = {
|
||||||
"name": "someName",
|
"name": names.get_full_name(),
|
||||||
"requests": [],
|
"requests": [], # list of class codes
|
||||||
"schedule": {}
|
"schedule": {}
|
||||||
}
|
}
|
||||||
# Get list of random class choices with no repeats
|
# Get list of random class choices with no repeats
|
||||||
# 8 primary choices, 2 secondary choices
|
# 8 primary choices, 2 secondary choices
|
||||||
courseSelection = random.sample(range(0, len(courses), 10))
|
courseSelection = random.sample(range(0, len(courses)), 10)
|
||||||
for courseNum in courseSelection:
|
for courseNum in courseSelection:
|
||||||
newStudent["requests"] = courses[courseNum]["code"]
|
newStudent["requests"].append(list(courses)[courseNum])
|
||||||
mockStudents.append(newStudent)
|
mockStudents.append(newStudent)
|
||||||
|
|
||||||
|
|
||||||
@@ -75,20 +78,51 @@ def generateSchedule():
|
|||||||
# Tally class request
|
# Tally class request
|
||||||
for request in student["requests"]:
|
for request in student["requests"]:
|
||||||
courses[request]["totalrequests"] += 1
|
courses[request]["totalrequests"] += 1
|
||||||
courses[request]["studentindexes"].append(i)
|
courses[request]["studentindexes"].append(mockStudents.index(student))
|
||||||
# Add course to active list if enough requests
|
# Add course to active list if enough requests
|
||||||
if courses[request]["totalRequests"] > minReq and courses[request] not in activeCourses: activeCourses.append(courses[request])
|
if courses[request]["totalrequests"] > minReq and courses[request]["code"] not in activeCourses: activeCourses[courses[request]["code"]] = courses[request]
|
||||||
|
|
||||||
|
# calculate # of times to run class
|
||||||
|
for i in range(len(activeCourses)):
|
||||||
|
classRunCount = math.floor(activeCourses[list(activeCourses)[i]]["totalrequests"] / classCap)
|
||||||
|
# If there is 18+ requests left, 1 more class could be run
|
||||||
|
if (activeCourses[list(activeCourses)[i]]["totalrequests"] % classCap) > minReq: classRunCount += 1
|
||||||
|
activeCourses[list(activeCourses)[i]]["classRunCount"] = classRunCount
|
||||||
|
|
||||||
for student in mockStudents:
|
for student in mockStudents:
|
||||||
blockIndex = 0
|
alternateOffset = len(student["requests"])-8
|
||||||
semesterIndex = 0
|
for i in range(len(student["requests"])-alternateOffset): # Subtract x classes as they are alternatives
|
||||||
for i in range(len(student["requests"])-2): # Subtract last 2 classes as they are alternatives
|
currentCourse = student["requests"][i]
|
||||||
currentClass = student
|
while True:
|
||||||
if student["requests"][i] in activeCourses:
|
if currentCourse in activeCourses:
|
||||||
pass
|
blockIndex = 1
|
||||||
elif student["requests"][i] not in activeCourses:
|
semesterIndex = 1
|
||||||
# Get first alternative
|
while True:
|
||||||
student["requests"][len(student["requests"])-2]
|
block = f"block{blockIndex}"
|
||||||
|
semester = f"semester{semesterIndex}"
|
||||||
|
if currentCourse in running[semester][block]:
|
||||||
|
# Add student to class
|
||||||
|
if len(running[semester][block][currentCourse]["students"]) == classCap:
|
||||||
|
# TODO: Class is full, find next class or generate new class
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
running[semester][block][currentCourse]["students"].append(student["name"])
|
||||||
|
student["schedule"][semester][block] = running[semester][block][currentCourse]["name"]
|
||||||
|
else:
|
||||||
|
if semesterIndex == 2 and blockIndex == 4:
|
||||||
|
# TODO: Class does not exist, create class in first available slot
|
||||||
|
break
|
||||||
|
elif blockIndex == 4: # 4th Block (final block)
|
||||||
|
blockIndex = 0
|
||||||
|
semesterIndex += 1
|
||||||
|
else: blockIndex += 1
|
||||||
|
break
|
||||||
|
elif currentCourse not in activeCourses:
|
||||||
|
if alternateOffset == 0:
|
||||||
|
# TODO: No more alternatives, solve problem
|
||||||
|
break
|
||||||
|
currentCourse = student["requests"][len(student["requests"])-alternateOffset]
|
||||||
|
alternateOffset -= 1
|
||||||
|
|
||||||
# for course in courses:
|
# for course in courses:
|
||||||
# blockIndex = 0
|
# blockIndex = 0
|
||||||
@@ -125,8 +159,9 @@ def generateSchedule():
|
|||||||
# else:
|
# else:
|
||||||
# running["semester1"][blockIndex].append(q)
|
# running["semester1"][blockIndex].append(q)
|
||||||
|
|
||||||
# for studentIndex in course["studentindexs"]:
|
# for studentIndex in course["studentindexes"]:
|
||||||
# if studentIndex == i:
|
# if studentIndex == i:
|
||||||
# pass
|
# pass
|
||||||
|
|
||||||
generateMockStudents(400)
|
generateMockStudents(400)
|
||||||
|
generateSchedule()
|
||||||
Reference in new issue
Block a user