changes
This commit is contained in:
parent
20ee2240f0
commit
fb4e3b47f3
12
courses.py
12
courses.py
|
|
@ -380,7 +380,7 @@ from localcache2 import student_count, teacher_list, course_from_id, course_sche
|
||||||
# Relevant stuff trying to see if its even being used or not
|
# Relevant stuff trying to see if its even being used or not
|
||||||
def course_term_summary(term="184",term_label="FA24"):
|
def course_term_summary(term="184",term_label="FA24"):
|
||||||
print("Summary of %s" % term_label)
|
print("Summary of %s" % term_label)
|
||||||
get_fresh = 0
|
get_fresh = 1
|
||||||
courses = getCoursesInTerm(term, get_fresh, 0)
|
courses = getCoursesInTerm(term, get_fresh, 0)
|
||||||
|
|
||||||
print("output to cache/term_summary.txt")
|
print("output to cache/term_summary.txt")
|
||||||
|
|
@ -2277,9 +2277,19 @@ def try_clustering(df):
|
||||||
return kmeans
|
return kmeans
|
||||||
|
|
||||||
|
|
||||||
|
def unpublish_a_course(course_id=0):
|
||||||
|
if course_id == 0:
|
||||||
|
course_id = input('course id? ')
|
||||||
|
u = url + f"/api/v1/courses/{course_id}"
|
||||||
|
data = { 'course[event]':'claim' }
|
||||||
|
r = requests.put(u, data=data, headers=header)
|
||||||
|
print(r.text)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
options = { 1: ['Cross check schedule with ztc responses',make_ztc_list] ,
|
options = { 1: ['Cross check schedule with ztc responses',make_ztc_list] ,
|
||||||
2: ['Add announcements to homepage', change_course_ann_homepage],
|
2: ['Add announcements to homepage', change_course_ann_homepage],
|
||||||
|
3: ['Unpublish a course', unpublish_a_course],
|
||||||
4: ['List students who passed quiz X', get_quiz_passers],
|
4: ['List students who passed quiz X', get_quiz_passers],
|
||||||
5: ['List the terms', getTerms],
|
5: ['List the terms', getTerms],
|
||||||
7: ['Show courses in a term', getCoursesInTerm],
|
7: ['Show courses in a term', getCoursesInTerm],
|
||||||
|
|
|
||||||
80
schedules.py
80
schedules.py
|
|
@ -11,11 +11,18 @@ columns, rows = os.get_terminal_size()
|
||||||
course_types = {'in-person':'IP','hybrid':'H','online':'O','online live':'OL'}
|
course_types = {'in-person':'IP','hybrid':'H','online':'O','online live':'OL'}
|
||||||
|
|
||||||
def course_to_string(crs):
|
def course_to_string(crs):
|
||||||
# crn type days start end cred code name teacher
|
|
||||||
lengths = [5, 3, 5, 6, 6, 4, 4, 13, 35, 25]
|
if len(crs['teacher'].split()) == 3:
|
||||||
items = [ crs[x] for x in 'crn,type,days,time_start,time_end,cred,act,code,name,teacher'.split(',')]
|
crs['teacher'] = crs['teacher'].split()[0] + " " + crs['teacher'].split()[2]
|
||||||
|
# crn type loc days start end cred num/cap code name teacher date
|
||||||
|
lengths = [5, 3, 7, 5, 6, 6, 4, 9, 13, 35, 25,10]
|
||||||
|
items = [ crs[x] for x in 'crn,type,loc,days,time_start,time_end,cred,act,cap,code,name,teacher,date'.split(',')]
|
||||||
items[1] = course_types[ items[1] ]
|
items[1] = course_types[ items[1] ]
|
||||||
items[5] = items[5][0:3]
|
if items[2] in ["ONLINE", "ONLINE LIVE"]: items[2] = ''
|
||||||
|
items[6] = items[6][0:3]
|
||||||
|
items[7] = f"{items[7]}/{items[8]}"
|
||||||
|
if int(crs['wl_act']) != 0: items[7] += f"+{crs['wl_act']}"
|
||||||
|
items.pop(8)
|
||||||
result = " ".join(f"{str(val):{width}}" for val, width in zip(items, lengths))
|
result = " ".join(f"{str(val):{width}}" for val, width in zip(items, lengths))
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
@ -41,16 +48,24 @@ def parse_courses(filename):
|
||||||
with open(filename) as f:
|
with open(filename) as f:
|
||||||
courses = json.load(f)
|
courses = json.load(f)
|
||||||
|
|
||||||
locations, teachers, days, now = {}, {}, {}, datetime.now()
|
depts, crns, codes, coursenames, locations, teachers, days, now = {}, {}, {}, {}, {}, {}, {}, datetime.now()
|
||||||
weekdays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
|
weekdays = ['monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday']
|
||||||
|
|
||||||
for course in courses:
|
for course in courses:
|
||||||
#print(course)
|
#print(course)
|
||||||
|
|
||||||
|
dept = course['code'].split()[0]
|
||||||
|
depts.setdefault(dept, []).append(course)
|
||||||
|
|
||||||
# Add course to teachers dict
|
# Add course to teachers dict
|
||||||
course['teacher'] = re.sub(r'\s+', ' ', course['teacher'])
|
course['teacher'] = re.sub(r'\s+', ' ', course['teacher'])
|
||||||
teachers.setdefault(course['teacher'], []).append(course)
|
teachers.setdefault(course['teacher'], []).append(course)
|
||||||
|
|
||||||
|
# add course to codes, crns, coursenames dict
|
||||||
|
codes.setdefault(course['code'], []).append(course)
|
||||||
|
crns.setdefault(course['crn'], []).append(course)
|
||||||
|
coursenames.setdefault(course['name'], []).append(course)
|
||||||
|
|
||||||
if course['type'] != 'in-person': continue
|
if course['type'] != 'in-person': continue
|
||||||
# Add course to locations dict
|
# Add course to locations dict
|
||||||
locations.setdefault(course['loc'], []).append(course)
|
locations.setdefault(course['loc'], []).append(course)
|
||||||
|
|
@ -67,7 +82,7 @@ def parse_courses(filename):
|
||||||
#if start_time.time() <= now.time() <= end_time.time():
|
#if start_time.time() <= now.time() <= end_time.time():
|
||||||
# print(f"{course['code']} is happening now in {course['loc']}")
|
# print(f"{course['code']} is happening now in {course['loc']}")
|
||||||
|
|
||||||
return locations, teachers, days
|
return depts,crns, codes, coursenames, locations, teachers, days
|
||||||
|
|
||||||
def write_at(row, col, text):
|
def write_at(row, col, text):
|
||||||
sys.stdout.write(f"\033[{row};{col}H{text}")
|
sys.stdout.write(f"\033[{row};{col}H{text}")
|
||||||
|
|
@ -108,7 +123,7 @@ if examples:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def interactive():
|
def interactive(allkeys):
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
def getch():
|
def getch():
|
||||||
|
|
@ -129,7 +144,7 @@ def interactive():
|
||||||
import msvcrt
|
import msvcrt
|
||||||
return msvcrt.getch().decode('utf-8')
|
return msvcrt.getch().decode('utf-8')
|
||||||
|
|
||||||
words = { x:{} for x in teacherkeys.keys() }
|
words = { x:{} for x in allkeys.keys() }
|
||||||
autocomplete = AutoComplete(words=words)
|
autocomplete = AutoComplete(words=words)
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -143,6 +158,7 @@ def interactive():
|
||||||
if char == '\x08':
|
if char == '\x08':
|
||||||
query = query[:-1]
|
query = query[:-1]
|
||||||
elif char == '\r':
|
elif char == '\r':
|
||||||
|
if query == 'quit': return False
|
||||||
break
|
break
|
||||||
else:
|
else:
|
||||||
query += char
|
query += char
|
||||||
|
|
@ -153,23 +169,37 @@ def interactive():
|
||||||
write_cleared_search_results()
|
write_cleared_search_results()
|
||||||
print()
|
print()
|
||||||
print()
|
print()
|
||||||
if results[0] in teacherkeys:
|
for (keyset,dataset) in [(deptkeys,depts),(teacherkeys,teachers), (locationkeys,locations),(coursenameskeys,coursenames),(codeskeys,codes),(crnskeys,crns)]:
|
||||||
teacher = teacherkeys[results[0]]
|
if results[0] in keyset:
|
||||||
if teacher in teachers.keys():
|
real_key = keyset[results[0]]
|
||||||
print(f"\nWeekly schedule for {teacher}:")
|
if real_key in dataset.keys():
|
||||||
for course in teachers[teacher]:
|
print(f"\nWeekly schedule for {real_key}:")
|
||||||
print(" " + course_to_string(course))
|
for course in dataset[real_key]:
|
||||||
else:
|
print(" " + course_to_string(course))
|
||||||
print("wasn't found.")
|
|
||||||
|
|
||||||
# Read in schedule
|
|
||||||
locations, teachers, days = parse_courses('cache/sample_semester.json')
|
|
||||||
teacherkeys = { x.lower():x for x in teachers.keys() }
|
|
||||||
|
|
||||||
lname_first = [x.split() for x in teachers.keys() ]
|
while True:
|
||||||
d_lnf = { x[-1].lower() + ", " + ' '.join(x[:-1]).lower(): ' '.join(x) for x in lname_first }
|
# Read in schedule
|
||||||
teacherkeys.update(d_lnf)
|
depts, crns, codes, coursenames, locations, teachers, days = parse_courses('cache/sample_semester.json')
|
||||||
print(json.dumps(teacherkeys, indent=2))
|
|
||||||
|
|
||||||
print("\nEnter your answer")
|
deptkeys = { x.lower():x for x in depts.keys() }
|
||||||
interactive()
|
teacherkeys = { x.lower():x for x in teachers.keys() }
|
||||||
|
locationkeys = { x.lower():x for x in locations.keys() }
|
||||||
|
coursenameskeys = { x.lower():x for x in coursenames.keys() }
|
||||||
|
codeskeys = { x.lower():x for x in codes.keys() }
|
||||||
|
crnskeys = { x.lower():x for x in crns.keys() }
|
||||||
|
|
||||||
|
lname_first = [x.split() for x in teachers.keys() ]
|
||||||
|
d_lnf = { x[-1].lower() + ", " + ' '.join(x[:-1]).lower(): ' '.join(x) for x in lname_first }
|
||||||
|
teacherkeys.update(d_lnf)
|
||||||
|
|
||||||
|
allkeys = {}
|
||||||
|
allkeys.update(deptkeys)
|
||||||
|
allkeys.update(teacherkeys)
|
||||||
|
allkeys.update(locationkeys)
|
||||||
|
allkeys.update(coursenameskeys)
|
||||||
|
allkeys.update(codeskeys)
|
||||||
|
allkeys.update(crnskeys)
|
||||||
|
|
||||||
|
print("\nEnter your query or 'quit': ")
|
||||||
|
if interactive(allkeys) == False: break
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue