Giter Site home page Giter Site logo

libraries_syllabus_notifications's Introduction

Faculty Syllabus Notifications

Take a CSV of missing syllabi VAULT report and send emails to faculty about which syllabi we expect from them. We skip notifying faculty for courses which do not require syllabi (e.g. Graduate Studio Practice) and work around problematic faculty values like "Staff" and "Standby".

Setup

Usual Python projects steps and configure a .env file with values for SMTP domain, port, user, and password (see example.env). Consult Mailgun or the Moodle outgoing mail configuration for these values.

> pipenv install
> cp reminders/example.env reminders/.env
> vim reminders/.env # edit in real values
> pipenv shell # run inside the virtual environment
> python cli.py -h # view usage information, see steps below

We also need access to the "integration files source" Google Storage Bucket. Once our CCA account has access permission, we use Application Default Credentials to allow this project access. This should be a matter of installing gcloud and running gcloud auth application-default login once.

Steps

  • enter the virtual environment, pipenv shell
  • update course data & faculty usernames, python cli.py -u
  • run VAULT's "Missing Syllabi by Semester" report (python cli.py -o opens it)
  • convert the report to CSV. Copy the HTML table and paste it into Google Sheets, then download as CSV. Alternatively, export to Excel then save as CSV after trimming the extraneous top rows (but not the column headers) & date at the bottom.
  • (optional, but recommended) run summary stats on our collection progress with python reminders/status.py data/2023-01-26-Spring_2023.json data/report.csv
  • finally, run python cli.py data/report.csv to send emails, use the --template flag to specify one of:
    • initial (default)
    • followup (sent ≈2 weeks later)
    • final (sent another ≈2 weeks later)
    • summer (exception because we only send one reminder, with no due date)

Testing

There are pytest tests, but not much coverage. The testing utilities are written as pipenv scripts in the Pipfile.

pipenv run test # run tests
pipenv run coverage # test coverage
pipenv run report # coverage report

Other Notes

We can dry-run the app by setting a DEBUG environment variable (or .env value) to True. Run DEBUG=true python cli.py report.csv to test the script, for instance. The DEBUG env var can also be used to debug issues with Google Cloud authentication, e.g. DEBUG=True python reminders/update_usernames.py.

We can use "has_syllabus.py" to count the number of rows in a CSV of courses which have syllabi:

> python reminders/has_syllabus.py data/report.csv
760 courses have syllabi of 806 total in the CSV

Report Format

Report CSV should have the following columns with this exact header row

"Semester","Department Code","Course Title","Instructor(s)","Section"

Some of the columns are not used but these are the ones typically contained in the VAULT report.

LICENSE

ECL Version 2.0

libraries_syllabus_notifications's People

Contributors

phette23 avatar dependabot[bot] avatar

Watchers

Scot Hacker avatar Eli Cochran avatar Mark Y. Goh avatar James Cloos avatar  avatar  avatar  avatar  avatar Ngoc Lam-Miller avatar CCA Software avatar  avatar Bobby White avatar Todd Larson avatar  avatar  avatar  avatar Lisa Conrad avatar John Elliott avatar  avatar

libraries_syllabus_notifications's Issues

switch to pytest

Going to be easier to test the CLI aspect as well as functions. See the Flask tutorial for an example of working with pytest.

sentence on course inaccuracies

Add a sentence to the first reminder about correcting inaccurate course information, since we're planning to send the week before classes start and those will likely be more numerous.

migrate project to libraries' wagtail site

Right now, we run these scripts on a random locally-hosted server running openEQUELLA simply because it's what I have ssh access to. Since it's python, it makes sense to incorporate it into the Wagtail website, as we have done with other utilities like the Summon deletes task.

chair VAULT links per term

Send program chairs an email (≈a week after the final faculty reminder) linking to their syllabi from the present term. The VAULT links look like this:

https://vault.cca.edu/logon.do?page=%2Fhierarchy.do%3Ftopic%3D17c784ec-650f-4381-8492-f1a3edf7d8c0%3ACERAM%2Cf416503d-ff0a-47f3-aaaa-93b7ea083873%3AFine%252BArts%252BDivision%2C289af057-1502-498a-b73a-259f26b968c0%3ASpring%252B2024%26sort%3Dname

this is for Ceramics under the Fine Arts Division for Spring 2024. You can see those strings in the URL; all we need to do is adjust the parameters for other programs/semesters.

Use the "Academic Chair Assignments" Workday report to determine chairs.

move more logic from cli.py to reminders app

The cli should really be a light wrapper over the different components of the reminders app with no business logic itself. So the bit about skipping over invalid faculty names and filtering to the right courses should be broken out into something else.

use Mailgun's SMTP to send mail

Can't we just authenticate with CCA's SMTP server and run this locally, not on a CCA VM at all? I don't remember if I tried this already but it seems like an obvious oversight.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.