# 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 = 0 # Roll Call Attendance assignment ID. Open the Roll Call (Attendance) # tool in your course; the assignment URL ends in /assignments/. # 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"]