From d8e662b5c3f43a682a64dbc8da33290977692b98 Mon Sep 17 00:00:00 2001 From: Benjamin Mako Hill Date: Tue, 6 Apr 2021 16:28:00 -0700 Subject: [PATCH] reworking the script to work with COMMLD570A (editted) this commit was editted to not include student details - new manual version of the coldcallbot - minor tweaks to make things less discord specific - changes for new URLs, filenames, and such --- assessment_and_tracking/track_enrolled.R | 18 ++++++------ coldcall.py | 36 ++++++++++++++---------- coldcallboy-manual.py | 15 ++++++++++ data/download_data.sh | 4 +++ 4 files changed, 49 insertions(+), 24 deletions(-) create mode 100755 coldcallboy-manual.py create mode 100755 data/download_data.sh diff --git a/assessment_and_tracking/track_enrolled.R b/assessment_and_tracking/track_enrolled.R index 563384d..f0d0fcb 100644 --- a/assessment_and_tracking/track_enrolled.R +++ b/assessment_and_tracking/track_enrolled.R @@ -1,4 +1,4 @@ -myuw <- read.csv("myuw-COM_482_A_autumn_2020_students.csv") +myuw <- read.csv("myuw-COMMLD_570_A_spring_2021_students.csv") gs <- read.delim("student_information.tsv") ## these are students who dropped the class (should be empty) @@ -10,14 +10,14 @@ myuw[!myuw$StudentNo %in% gs$Your.UW.student.number,] ## read all the folks who have been called and see who is missing from ## the google sheet -call.list <- unlist(lapply(list.files(".", pattern="^attendance-.*tsv$"), function (x) { - d <- read.delim(x) - strsplit(d[[2]], ",") -}) -) -present <- unique(call.list) -present[!present %in% gs[["Your.username.on.the.class.Discord.server"]]] +## call.list <- unlist(lapply(list.files(".", pattern="^attendance-.*tsv$"), function (x) { +## d <- read.delim(x) +## strsplit(d[[2]], ",") +## }) +## ) +## present <- unique(call.list) +## present[!present %in% gs[["Your.username.on.the.class.Discord.server"]]] ## and never attended class.. -gs[["Your.username.on.the.class.Discord.server"]][!gs[["Your.username.on.the.class.Discord.server"]] %in% present] +## gs[["Your.username.on.the.class.Discord.server"]][!gs[["Your.username.on.the.class.Discord.server"]] %in% present] diff --git a/coldcall.py b/coldcall.py index 1905844..1ba96a5 100644 --- a/coldcall.py +++ b/coldcall.py @@ -8,19 +8,21 @@ from csv import DictReader import os.path import re -import discord class ColdCall(): - def __init__ (self): + def __init__ (self, record_attendance=True): self.today = str(datetime.date(datetime.now())) # how much less likely should it be that a student is called upon? - self.weight = 2 + self.weight = 2 + self.record_attendance = record_attendance # filenames self.__fn_studentinfo = "data/student_information.tsv" self.__fn_daily_calllist = f"data/call_list-{self.today}.tsv" self.__fn_daily_attendance = f"data/attendance-{self.today}.tsv" + self.preferred_names = self.__get_preferred_names() + def __load_prev_questions(self): previous_questions = defaultdict(int) @@ -29,21 +31,24 @@ class ColdCall(): with open(f"./data/{fn}", 'r') as f: for row in DictReader(f, delimiter="\t"): if not row["answered"] == "FALSE": - previous_questions[row["discord_name"]] += 1 + previous_questions[row["unique_name"]] += 1 return previous_questions - - def __get_preferred_name(self, selected_student): - # translate the discord name into the preferred students name, - # if possible, otherwise return the discord name + + def __get_preferred_names(self): + # translate the unique name into the preferred students name, + # if possible, otherwise return the unique name preferred_names = {} with open(self.__fn_studentinfo, 'r') as f: for row in DictReader(f, delimiter="\t"): - preferred_names[row["Your username on the class Discord server"]] = row["Name you'd like to go by in class"] + preferred_names[row["Your username on the class Teams server"]] = row["Name you'd like to go by in class"] - if selected_student in preferred_names: - return preferred_names[selected_student] + return(preferred_names) + + def __get_preferred_name(self, selected_student): + if selected_student in self.preferred_names: + return self.preferred_names[selected_student] else: return None @@ -59,7 +64,7 @@ class ColdCall(): weights[s] = weights[s] / self.weight # choose one student from the weighted list - print(weights) + # print(weights) # DEBUG LINE return choices(list(weights.keys()), weights=list(weights.values()), k=1)[0] def __record_attendance(self, students_present): @@ -78,7 +83,7 @@ class ColdCall(): # if it's the first one of the day, write it out if not os.path.exists(self.__fn_daily_calllist): with open(self.__fn_daily_calllist, "w") as f: - print("\t".join(["discord_name", "timestamp", "answered", "assessment"]), file=f) + print("\t".join(["unique_name", "timestamp", "answered", "assessment"]), file=f) # open for appending the student with open(self.__fn_daily_calllist, "a") as f: @@ -89,7 +94,8 @@ class ColdCall(): selected_student = self.__select_student_from_list(students_present) # record the called-upon student in the right place - self.__record_attendance(students_present) + if self.record_attendance: + self.__record_attendance(students_present) self.__record_coldcall(selected_student) preferred_name = self.__get_preferred_name(selected_student) @@ -100,7 +106,7 @@ class ColdCall(): 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)) diff --git a/coldcallboy-manual.py b/coldcallboy-manual.py new file mode 100755 index 0000000..3bb580c --- /dev/null +++ b/coldcallboy-manual.py @@ -0,0 +1,15 @@ +#!/usr/bin/env python3 + +from coldcall import ColdCall +import re + +## create the coldcall object +cc = ColdCall(record_attendance=False) + +student_list = cc.preferred_names + +# print out 100 students + +for i in range(100): + print(f"{i}. {cc.coldcall(student_list)} [ ] [ ]\n") + diff --git a/data/download_data.sh b/data/download_data.sh new file mode 100755 index 0000000..8687509 --- /dev/null +++ b/data/download_data.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +wget 'https://docs.google.com/spreadsheets/d/FIXME/export?gid=FIXME&format=tsv' -O 'student_information.tsv' + -- 2.39.5