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

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.