Initial commit: CSSS 590 attendance tracker
Publish review_attendance.py, the email and failed-message templates, and the example config used to track CSSS 590 seminar attendance and send warning DMs through the Canvas Conversations API. README walks through the weekly workflow, the Roll Call CSV quirks worth knowing about, and what must stay out of git. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
55
config.toml.example
Normal file
55
config.toml.example
Normal file
@@ -0,0 +1,55 @@
|
||||
# Copy this file to `config.toml` and fill in your course's values.
|
||||
# `config.toml` is gitignored — it contains course-specific IDs (and
|
||||
# possibly your Canvas API token) that only matter to your section.
|
||||
|
||||
[course]
|
||||
# Canvas course ID. Find it in the course URL:
|
||||
# https://canvas.example.edu/courses/<canvas_id>/...
|
||||
canvas_id = 0
|
||||
|
||||
# Roll Call Attendance assignment ID. Open the Roll Call (Attendance)
|
||||
# tool in your course; the assignment URL ends in /assignments/<id>.
|
||||
# Not used by the script today, but kept for reference.
|
||||
roll_call_assignment_id = 0
|
||||
|
||||
# Short label used in places like the message subject line.
|
||||
short_name = "CSSS 590"
|
||||
|
||||
[attendance]
|
||||
# How many sessions students must attend to pass.
|
||||
sessions_required = 7
|
||||
|
||||
# How many sessions you expect to hold in the quarter. The warning
|
||||
# threshold is derived as sessions_expected - sessions_required, i.e.,
|
||||
# the number of absences after which one more absence would put the
|
||||
# student below the required count.
|
||||
sessions_expected = 9
|
||||
|
||||
[contact]
|
||||
# Subject line on all warning DMs sent through the Canvas Conversations API.
|
||||
subject = "CSSS 590 attendance"
|
||||
|
||||
# Path (relative to this config) of the template rendered as a Python
|
||||
# f-string for each at-risk student. See README for available variables.
|
||||
template_file = "email_template.txt"
|
||||
|
||||
# Tab-separated log of students who have been warned. The script reads
|
||||
# it to skip already-warned students and appends new rows after each
|
||||
# successful send.
|
||||
contacted_log = "students_contacted.tsv"
|
||||
|
||||
[canvas]
|
||||
# Base URL of your Canvas instance (no trailing slash).
|
||||
base_url = "https://canvas.uw.edu"
|
||||
|
||||
# Your Canvas API token. Generate one at:
|
||||
# Canvas → Account → Settings → "+ New Access Token"
|
||||
# Treat this like a password — `config.toml` is gitignored so it stays
|
||||
# off any git remote you push.
|
||||
token = "PASTE_YOUR_TOKEN_HERE"
|
||||
|
||||
# Alternative to `token` above: a shell command (argv list) that prints
|
||||
# the token to stdout. Useful if your token lives in a password manager.
|
||||
# `token` takes precedence over `token_command` if both are set, and the
|
||||
# CANVAS_TOKEN environment variable takes precedence over both.
|
||||
# token_command = ["pass", "Canvas/api-token"]
|
||||
Reference in New Issue
Block a user