DIKU Support Tools for Canvas LMS
Alternatives To Staffeli
Project NameStarsDownloadsRepos Using ThisPackages Using ThisMost Recent CommitTotal ReleasesLatest ReleaseOpen IssuesLicenseLanguage
Canvas Lms5,1046a day ago1August 09, 2019487agpl-3.0Ruby
The open LMS by Instructure, Inc.
Canvasapi46612286 months ago25May 25, 202354mitPython
Python API wrapper for Instructure's Canvas LMS. Easily manage courses, users, gradebooks, and more.
a year ago7mitPython
🌐 One-click script to synchronize files from Canvas LMS.
12 days ago7HTML
Unsupported Canvas Tweaks
2 months ago28otherR
R Client for Canvas LMS API
Canvas Student Data Export66
2 months ago6mitPython
Python script to download all of your student data from Canvas LMS
922 days ago13June 16, 20234bsd-3-clausePython
A JupyterHub authenticator for LTI
Node Canvas Api582a month ago79October 25, 20235mitJavaScript
Access the Canvas API using Node.js. 54 functions (and counting)! Pull requests are welcome and appreciated.
Django Lti Provider44
413 days ago17April 07, 20226otherPython
django-lti-provider adds LTI functionality for the Django web framework. This work began as a port of MIT's LTI Flask Sample, which demonstrates a sample LTI provider for the Flask Framework based on the Python LTI library, PyLTI.
Canvas Lms Cloud43
9 years ago18Shell
:cloud: Automagically configure, deploy, and host the open source Canvas LMS on everything from simple local virtual machine instance to a horizontally scaling, fault-tolerant, load balanced private cloud.
Alternatives To Staffeli
Select To Compare

Alternative Project Comparisons

staffeli DIKU Support Tools for Canvas LMS

These tools leverage the Canvas LMS REST API to create a more pleasant environment for working with Absalon.

"Staffeli" is Danish for "easel" a support frame for holding up a canvas.

Documentation Status Travis CI (Linux + macOS) Status License: EUPL v1.1 PyPI

1   Purpose

The purpose of Staffeli is two-fold:

  1. Leverage the Canvas LMS REST API to get things done better, faster, stronger.
  2. Quick prototyping of new features for Canvas LMS.

Initially, Staffeli is not intended for managing course content, merely to snapshot course data (e.g., enrolled students, groups, sections, submissions), and to get grading done efficiently.

Although Staffeli is written in Python 3, it is not intent on forcing you to manage your course using Python, or to have to get intimate with the Staffeli API to get things done. Staffeli extensively uses YAML files for storage, enabling the easy use of both command-line utilities and the programming language of your choice, to get things done quickly, and efficiently.

2   Status

Staffeli is maturing. It is being transitioned to be annotated with type hints, with the types checked statically with mypy, and a test-suite has been set up, but full-blown continuous integration remains to be set up.

We are still covering a fairly small subset of the API. Brace yourself. Lend a hand.

3   Installation

These are instructions for installing Staffeli on your system.

  1. Download this repository or git clone
  2. Enter directory and run pip3 install -e .

These are instructions for installing Staffeli in a user directory.

  1. Check that you have Python 3 and pip installed: which python3 pip3
  2. Install virtualenv globally, e.g. with sudo pip3 install virtualenv
  3. Download this repository or git clone
  4. Enter directory and create virtualenv with virtualenv .
  5. Activate virtualenv with source bin/activate
  6. Install Staffeli in virtualenv, pip3 install -e .

4   Getting Started

With Staffeli, we work with local course clones. We aim to keep these clones compatible with git.

We recommend that you create a local directory canvas, absalon, or similar, for all of you Canvas-related local course clones. Staffeli needs some initial help to be able to login with your credentials. You need to generate a token for Staffeli to use, and save it as .token, token, or token.txt in this high-level directory.

NB! This is your personal token so do not share it with others, else they can easily impersonate you using a tool like Staffeli. Unfortunately, to the best of our knowledge, Canvas has no means to segregate or specialize tokens, so this is really "all or nothing".

4.1   Cloning a Course

To clone a course:

$ staffeli clone '<course name>' [dir]

The 'course name' is any case-insensitive substring of the course name as it appears on your dashboard. Use quotes in case the substring contains spaces. If there are multiple conflicting names matching the substring, Staffeli will complain and let you try again.

The [dir] is an optional destination directory for the local working area, in case it should not be named <course string>. For example:

$ staffeli clone 'Advanced programming' ap17
Cloning '5100-B1-1E17;Advanced programming' into 'ap17'...

4.2   Fetch Submissions for a New Assignment

Use staffeli fetch. For instance, to fetch all submissions for "A3":

$ staffeli fetch subs/A3

To fetch just the metadata for all submissions, but not the submissions themselves:

$ staffeli fetch subs

4.3   Fetch Groups

This is a good idea to make sure you are up-to-date with canvas.

$ staffeli fetch groups

4.4   Grade a Submission

Assuming you are in the submission directory, you can use staffeli grade to grade the submission:

staffeli grade GRADE [-m COMMENT] [FILEPATH]...

    GRADE           pass, fail, or an int.
    [-m COMMENT]    An optional comment to write.
    [-f FILEPATH]   Upload the contents of a file as a comment.
    [FILEPATH]...   Optional files to upload alongside.

4.5   Split Submissions among TAs

See the groups contrib.

5   Documentation

It is up-and-coming on [ReadTheDocs]( The source files for that page are under [docs/source](docs/source), and they are, much like this README, written in reStructured Text. It is also suggested to follow the Python documentation style guide.

6   Contributing

First, take a look at our design guide and style guide.

Contact us at dikunix at dikumail dot dk.

Take a look at our on-going issues.

7   Testing

Currently, Travis CI will only check that you roughly conform to the PEP 8 Python Style Guide (using flake8), and perform static type-checking with mypy, all only for selected Python files in this repository. See (and run?) ` <>`__ for further details.

Before you do that however, you might want to do this:

$ pip3 install -r test-requirements.txt

This will also install what you need to run the dynamic tests we have in store under tests, except for Docker: ` <>`__ will fire up a Docker image with a local Canvas instance for use with our tests. You will also find it in your browser under the address localhost:3000. The user is [email protected] and the password is canvas.

The static and dynamic tests are also part of the `pre-commit <hooks/pre-commit>`__ and `pre-push <hooks/pre-push>`__ hooks, respectively. Install these hooks by executing `hooks/ <hooks/>`__. Unfortunately, neither these hooks, nor the hooks installer will work on Windows.

7.1   Static Testing Framework

We use flake8 for style-checking and mypy for static type-checking.

Assuming you have these tools installed, you can do this:

$ ./

This is also part of the `pre-commit <hooks/pre-commit>`__ hook.

7.2   Dynamic Testing Framework

We use pytest together with hypothesis.

Assuming you have these tools installed, you can do this:

$ pytest

This is also part of the pre-push hook.

7.3   Dynamic Test Coverage

Run pytest with the option --cov=staffeli to get an idea of the test coverage of Staffeli proper.

It is pretty lousy ATM. As of 2017-05-24, the numbers were:

Name                          Stmts   Miss  Cover
staffeli/           28     28     0%
staffeli/             22     13    41%
staffeli/              326    326     0%
staffeli/                 295    295     0%
staffeli/               43      4    91%
staffeli/                57     41    28%
staffeli/                 29      5    83%
staffeli/                23     23     0%
staffeli/               31      8    74%
staffeli/                 3      1    67%
staffeli/       121    121     0%
staffeli/       9      9     0%
staffeli/           22     22     0%
staffeli/        112      4    96%
staffeli/               17     17     0%
TOTAL                          1138    917    19%
Popular Lms Projects
Popular Canvas Projects
Popular Learning Resources Categories
Related Searches

Get A Weekly Email With Trending Projects For These Categories
No Spam. Unsubscribe easily at any time.
Rest Api