17
0

Merge branch 'COM481-2024Q4'

This commit is contained in:
Benjamin Mako Hill 2024-09-28 16:27:12 -07:00
commit d6b74612e3
3 changed files with 34 additions and 27 deletions

View File

@ -8,24 +8,28 @@ from csv import DictReader
import os.path import os.path
import re import re
import json
class ColdCall(): class ColdCall():
def __init__ (self, record_attendance=True, preferred_name_field=None): def __init__ (self, record_attendance=True):
with open("configuration.json") as config_file:
config = json.loads(config_file.read())
self.today = str(datetime.date(datetime.now())) self.today = str(datetime.date(datetime.now()))
# how much less likely should it be that a student is called upon? # how much less likely should it be that a student is called upon?
self.weight = 2 self.weight = 2
self.record_attendance = record_attendance self.record_attendance = record_attendance
# filenames # filenames
self.__fn_studentinfo = "data/student_information.tsv" self.__fn_studentinfo = config["student_info_file"]
self.__fn_daily_calllist = f"data/call_list-{self.today}.tsv" self.__fn_daily_calllist = config["daily_calllist_file"].format(date=self.today)
self.__fn_daily_attendance = f"data/attendance-{self.today}.tsv" self.__fn_daily_attendance = config["daily_attendance"].format(date=self.today)
self.__preferred_name_field = preferred_name_field
if preferred_name_field != None: self.unique_row = config["unique_name_rowname"]
self.preferred_names = self.__get_preferred_names() if "preferred_name_rowname" in config:
self.preferred_row = config["preferred_name_rowname"]
else: else:
self.preferred_names = None self.preferred_row = None
def __load_prev_questions(self): def __load_prev_questions(self):
previous_questions = defaultdict(int) previous_questions = defaultdict(int)
@ -35,7 +39,7 @@ class ColdCall():
with open(f"./data/{fn}", 'r') as f: with open(f"./data/{fn}", 'r') as f:
for row in DictReader(f, delimiter="\t"): for row in DictReader(f, delimiter="\t"):
if not row["answered"] == "FALSE": if not row["answered"] == "FALSE":
previous_questions[row["unique_name"]] += 1 previous_questions[row[self.unique_row]] += 1
return previous_questions return previous_questions
@ -46,7 +50,7 @@ class ColdCall():
preferred_names = {} preferred_names = {}
with open(self.__fn_studentinfo, 'r') as f: with open(self.__fn_studentinfo, 'r') as f:
for row in DictReader(f, delimiter="\t"): for row in DictReader(f, delimiter="\t"):
row["Your UW student number"] = row[self.__preferred_name_field] preferred_names[row[self.unique_row]] = row[self.preferred_row]
return(preferred_names) return(preferred_names)
@ -87,12 +91,14 @@ class ColdCall():
# if it's the first one of the day, write it out # if it's the first one of the day, write it out
if not os.path.exists(self.__fn_daily_calllist): if not os.path.exists(self.__fn_daily_calllist):
with open(self.__fn_daily_calllist, "w") as f: with open(self.__fn_daily_calllist, "w") as f:
print("\t".join(["unique_name", "timestamp", "answered", "assessment"]), file=f) print("\t".join([self.unique_row, self.preferred_row, "answered", "assessment", "timestamp"]), file=f)
preferred_name = self.__get_preferred_name(selected_student)
# open for appending the student # open for appending the student
with open(self.__fn_daily_calllist, "a") as f: with open(self.__fn_daily_calllist, "a") as f:
print("\t".join([selected_student, str(datetime.now()), print("\t".join([selected_student, preferred_name,
"MISSING", "MISSING"]), file=f) "MISSING", "MISSING", str(datetime.now())]), file=f)
def coldcall(self, students_present): def coldcall(self, students_present):
selected_student = self.select_student_from_list(students_present) selected_student = self.select_student_from_list(students_present)
@ -109,13 +115,3 @@ class ColdCall():
coldcall_message = f"@{selected_student}, you're up!" coldcall_message = f"@{selected_student}, you're up!"
return coldcall_message return coldcall_message
# cc = ColdCall()
# test_student_list = ["jordan", "Kristen Larrick", "Madison Heisterman", "Maria.Au20", "Laura (Alia) Levi", "Leona Aklipi", "anne", "emmaaitelli", "ashleylee", "allie_partridge", "Tiana_Cole", "Hamin", "Ella Qu", "Shizuka", "Ben Baird", "Kim Do", "Isaacm24", "Sam Bell", "Courtneylg"]
# print(cc.coldcall(test_student_list))
# test_student_list = ["jordan", "Kristen Larrick", "Mako"]
# print(cc.coldcall(test_student_list))
# test_student_list = ["jordan", "Kristen Larrick"]
# print(cc.coldcall(test_student_list))

View File

@ -1,4 +0,0 @@
#!/bin/bash
wget 'https://docs.google.com/spreadsheets/d/FIXME/export?gid=FIXME&format=tsv' -O 'student_information.tsv'

15
download_student_info.py Executable file
View File

@ -0,0 +1,15 @@
#!/usr/bin/env python3
import json
import subprocess
with open("configuration.json", 'r') as config_file:
config = json.loads(config_file.read())
base_url = 'https://docs.google.com/spreadsheets/d/{id}/export?gid={gid}&format=tsv'
student_info_url = base_url.format(id=config["student_info_gsheet_id"], gid=config["student_info_gsheet_gid"])
subprocess.run(["wget", url, "-O", config["student_info_file"]], check=True)
optout_url = base_url.format(id=config["optout_info_gsheet_id"], gid=config["output_info_gsheet_gid"])
subprocess.run(["wget", optout_url, "-O", config["optout_file"]], check=True)