forked from lewin/cs270project
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathprocess_input.py
64 lines (51 loc) · 1.82 KB
/
process_input.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
import json
TUTORING_START_HOUR = 13
TUTORING_END_HOUR = 16
# They stack.
REVIEW_SESSION_SUBTRACTED_HOURS = 2
EXECS_SUBTRACTED_HOURS = 2
PRODEV_SUBTRACTED_HOURS = 2
excluded_ppl = []
review_session_ppl = []
prodev_ppl = []
execs = []
with open("base_params.json") as f:
data = json.load(f)
tutors = data["tutors"]
print("Len all tutors before subtracted hours:", len(tutors), len(excluded_ppl))
tutors = list(filter(lambda t: t["name"] not in excluded_ppl, tutors))
for tutor in tutors:
if tutor["name"] in review_session_ppl:
tutor["numAssignments"] -= REVIEW_SESSION_SUBTRACTED_HOURS
if tutor["name"] in prodev_ppl:
tutor["numAssignments"] -= PRODEV_SUBTRACTED_HOURS
if tutor["name"] in execs:
tutor["numAssignments"] -= EXECS_SUBTRACTED_HOURS
tutors = list(filter(lambda t: t["numAssignments"] > 0, tutors))
print("Len all tutors after subtracted hours:", len(tutors))
data["tutors"] = tutors
slots = data["slots"]
d = {
"cory": dict(),
"prodevcory": dict(),
}
for slot in slots:
curr_d = d.get(slot["office"].lower(), None)
if curr_d is None:
continue
curr_d[(slot["day"], slot["hour"])] = slot["sid"]
slots = list(filter(lambda s: s["office"].lower() != "prodevcory", slots))
slots = list(filter(lambda s: s["hour"] >= TUTORING_START_HOUR, slots))
slots = list(filter(lambda s: s["hour"] <= TUTORING_END_HOUR, slots))
data["slots"] = slots
mapping = dict()
for time, cory_id in d["cory"].items():
prodev_id = d["prodevcory"][time]
mapping[prodev_id] = cory_id
for tutor in tutors:
batch_prefs = [tutor["timeSlots"], tutor["officePrefs"]]
for prefs in batch_prefs:
for prodev_id, cory_id in mapping.items():
prefs[cory_id], prefs[prodev_id] = prefs[prodev_id], prefs[cory_id]
with open("scheduler_input.json", "w") as f:
json.dump(data, f)