flex and semester start

This commit is contained in:
phowell 2024-08-26 07:39:13 -07:00
parent 4c057240c6
commit 83678373d6
4 changed files with 82 additions and 5 deletions

View File

@ -375,13 +375,42 @@ def course_term_summary_local(term="180",term_label="FA23"):
#print(info) #print(info)
oo.write('\n</ul>\n') oo.write('\n</ul>\n')
from localcache2 import student_count, teacher_list, course_from_id, course_sched_entry_from_id
# 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="180",term_label="FA23"): def course_term_summary(term="184",term_label="FA24"):
print("Summary of %s" % term_label) print("Summary of %s" % term_label)
courses = getCoursesInTerm(term,0,0) get_fresh = 0
courses = getCoursesInTerm(term, get_fresh, 0)
print("output to cache/term_summary.txt") print("output to cache/term_summary.txt")
outp = codecs.open('cache/term_summary.txt','w','utf-8') outp = codecs.open('cache/term_summary.txt','w','utf-8')
outp.write('id,name,view,type,state,sched_start,ilearn_start,sched_students,ilearn_students,num_teachers,teacher1,teacher2,teacher2\n')
for c in courses:
c_db = course_from_id(c['id'])
try:
ilearn_start = c_db['start_at']
s_db = course_sched_entry_from_id(c['id'])
except:
print(f"problem with this course: {c_db}")
continue
sched_start = ''
sched_students = ''
type = ''
if (s_db):
sched_start = s_db['start']
sched_students =s_db['act']
type = s_db['type']
#print(s_db)
num_students = student_count(c['id'])
tchr = teacher_list(c['id'])
tt = ','.join([x[1] for x in tchr])
line = f"{c['id']},{c['course_code']},{c['default_view']},{type},{c['workflow_state']},{sched_start},{ilearn_start},{sched_students},{num_students},{len(tchr)},{tt}"
print(line)
outp.write(line + "\n")
return
tup = tuple("id course_code default_view workflow_state".split(" ")) tup = tuple("id course_code default_view workflow_state".split(" "))
smaller = [ funcy.project(x , tup) for x in courses ] smaller = [ funcy.project(x , tup) for x in courses ]

View File

@ -203,6 +203,7 @@ def search_user(searchterm=''):
def search_and_select_user(searchterm): def search_and_select_user(searchterm):
candidates = search_user(searchterm) candidates = search_user(searchterm)
if len(candidates) == 0: return 0
if len(candidates) == 1: return candidates[0] if len(candidates) == 1: return candidates[0]
for i,c in enumerate(candidates): for i,c in enumerate(candidates):

View File

@ -134,6 +134,14 @@ def user_from_goo(goo):
# convert row to dict using column names as keys # convert row to dict using column names as keys
return dict(zip([desc[0] for desc in cursor.description], row)) return dict(zip([desc[0] for desc in cursor.description], row))
def course_sched_entry_from_id(id):
q = f"SELECT * FROM canvas.schedule s WHERE s.canvascourse={id}"
(connection,cursor) = db()
cursor.execute(q, None) # execute query with optional parameters
row = cursor.fetchone() # fetch a single row
if row:
# convert row to dict using column names as keys
return dict(zip([desc[0] for desc in cursor.description], row))
def course_from_id(id): def course_from_id(id):
q = f"SELECT * FROM canvas.courses c WHERE c.id={id}" q = f"SELECT * FROM canvas.courses c WHERE c.id={id}"
@ -277,7 +285,7 @@ ORDER BY num DESC, u.sortable_name""" % (where1,where2)
def all_sem_courses_teachers(SEM="202450"): def all_sem_courses_teachers(SEM="202470"):
q = f"""SELECT c.id, c.name, c.course_code, u.name, u.sortable_name, u.id AS user_cid, p.sis_user_id, s.type, s.crn FROM canvas.courses AS c q = f"""SELECT c.id, c.name, c.course_code, u.name, u.sortable_name, u.id AS user_cid, p.sis_user_id, s.type, s.crn FROM canvas.courses AS c
JOIN canvas.enrollments AS e ON e.course_id=c.id JOIN canvas.enrollments AS e ON e.course_id=c.id
JOIN canvas.users AS u ON u.id=e.user_id JOIN canvas.users AS u ON u.id=e.user_id
@ -426,9 +434,25 @@ def courses_to_sched():
conn.close() conn.close()
def student_count(courseid):
conn,cursor = db()
q = f"""SELECT COUNT(u.id) AS student_count FROM canvas.courses AS c
JOIN canvas.enrollments AS e ON e.course_id=c.id
JOIN canvas.users AS u ON u.id=e.user_id
WHERE c.id={courseid}
AND e.type='StudentEnrollment';"""
cursor.execute(q)
return cursor.fetchall()[0][0]
def teacher_list(courseid):
conn,cursor = db()
q = f"""SELECT u.id, u.name FROM canvas.courses AS c
JOIN canvas.enrollments AS e ON e.course_id=c.id
JOIN canvas.users AS u ON u.id=e.user_id
WHERE c.id={courseid}
AND e.type='TeacherEnrollment';"""
cursor.execute(q)
return cursor.fetchall()

View File

@ -87,6 +87,29 @@ where (s.type='online' or s.type='hybrid' or s.type='online line')
and not cc.path like '%noemail%' and not cc.path like '%noemail%'
and not cc.path='sstaff@gavilan.edu'; and not cc.path='sstaff@gavilan.edu';
--
-- semester prep
--
--
-- student count of course
SELECT COUNT(u.id) AS student_count FROM canvas.courses AS c
JOIN canvas.enrollments AS e ON e.course_id=c.id
JOIN canvas.users AS u ON u.id=e.user_id
WHERE c.id=19570
AND e.type='StudentEnrollment';
-- teacher names
SELECT u.id, u.name FROM canvas.courses AS c
JOIN canvas.enrollments AS e ON e.course_id=c.id
JOIN canvas.users AS u ON u.id=e.user_id
WHERE c.id=19570
AND e.type='TeacherEnrollment';
-- --
-- --
-- users in sp24 and number of each type of course taking -- users in sp24 and number of each type of course taking