]> code.communitydata.science - coldcallbot-discord.git/blobdiff - coldcall.py
changed from absenses to opt-out since that matches syllabus
[coldcallbot-discord.git] / coldcall.py
index 2250fac379fc98b0bfc06a0bb3695e711b3ad837..3fb79d663c7c694b751710e48ad0f64a8bbaaf13 100644 (file)
@@ -16,6 +16,7 @@ class ColdCall():
             config = json.loads(config_file.read())
 
         self.today = str(datetime.date(datetime.now()))
+
         # how much less likely should it be that a student is called upon?
         self.weight = 2
         self.record_attendance = record_attendance
@@ -26,9 +27,10 @@ class ColdCall():
         self.__fn_daily_attendance = config["daily_attendance"].format(date=self.today)
 
         self.unique_row = config["unique_name_rowname"]
-        self.preferred_row = config["preferred_name_rowname"]
-
-        self.preferred_names = self.__get_preferred_names()
+        if "preferred_name_rowname" in config:
+            self.preferred_row = config["preferred_name_rowname"]
+        else:
+            self.preferred_row = None
         
     def __load_prev_questions(self):
         previous_questions = defaultdict(int)
@@ -42,7 +44,7 @@ class ColdCall():
 
         return previous_questions
 
-    def __get_preferred_names(self):
+    def get_preferred_names(self):
         # translate the unique name into the preferred students name,
         # if possible, otherwise return the unique name
 
@@ -54,12 +56,13 @@ class ColdCall():
         return(preferred_names)
         
     def __get_preferred_name(self, selected_student):
-        if selected_student in self.preferred_names:
-            return self.preferred_names[selected_student]
+        preferred_names = self.get_preferred_names()
+        if selected_student in preferred_names:
+            return preferred_names[selected_student]
         else:
             return None
 
-    def __select_student_from_list (self, students_present):
+    def select_student_from_list(self, students_present):
         prev_questions = self.__load_prev_questions()
         
         # created a weighted list by starting out with everybody 1
@@ -74,7 +77,7 @@ class ColdCall():
         # print(weights) # DEBUG LINE
         return choices(list(weights.keys()), weights=list(weights.values()), k=1)[0]
 
-    def __record_attendance(self, students_present):
+    def record_attendance(self, students_present):
         # if it's the first one of the day, write it out
         if not os.path.exists(self.__fn_daily_attendance):
             with open(self.__fn_daily_attendance, "w") as f:
@@ -86,13 +89,15 @@ class ColdCall():
                              ",".join(students_present)]),
                   file=f)
 
-    def __record_coldcall(self, selected_student):
+    def record_coldcall(self, selected_student):
         # 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([self.unique_row, self.preferred_row, "answered", "assessment", "timestamp"]), file=f)
 
         preferred_name = self.__get_preferred_name(selected_student)
+        if preferred_name == None:
+            preferred_name = ""
 
         # open for appending the student
         with open(self.__fn_daily_calllist, "a") as f:
@@ -100,12 +105,12 @@ class ColdCall():
                              "MISSING", "MISSING", str(datetime.now())]), file=f)
 
     def coldcall(self, students_present):
-        selected_student = self.__select_student_from_list(students_present)
+        selected_student = self.select_student_from_list(students_present)
 
         # record the called-upon student in the right place
         if self.record_attendance:
-            self.__record_attendance(students_present)
-        self.__record_coldcall(selected_student)
+            self.record_attendance(students_present)
+        self.record_coldcall(selected_student)
 
         preferred_name = self.__get_preferred_name(selected_student)
         if preferred_name:

Community Data Science Collective || Want to submit a patch?