Giter Club home page Giter Club logo

canvaslms's Introduction

Iโ€™m Lecturer in Computer Science at the Division of Theoretical Computer Science, Department of Computer Science at the School of Electrical Engineering and Computer Science of KTH Royal Institute of Technology.

I'm interested in

  • e-learning and have developed distance courses/programmes since 2011,
  • teaching in programming and security,
  • research in didactics and computer security, particularly democracy-enhancing technologies.

I teach Python and security, I do a lot of automation in Python.

canvaslms's People

Contributors

dbosk avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

boaung

canvaslms's Issues

Create pip package

We must create a pip-installable package for one command to be able to import another as a module.

Add results command

The results command lists results for a course. And optionally filters one student.

Add a stats command

Something that can do this for an assignment. And also something that can say something about relations to dates.

#!/bin/bash

COURSE=DD1315
ASSIGNMENT=Projektredovisning

results=$(mktemp)
canvas submissions -c $COURSE -a "$ASSIGNMENT" > $results

function get_results() {
  cat $results
}

function print_stats() {
  total=$(get_results | grep -v None | wc -l)
  echo "Done: $total (100%)"
  As=$(get_results | grep A | wc -l)
  echo "As: $As ($(((100 * $As / $total)))%)"
  Bs=$(get_results | grep B | wc -l)
  echo "Bs: $Bs ($(((100 * $Bs / $total)))%)"
  Cs=$(get_results | grep C | wc -l)
  echo "Cs: $Cs ($(((100 * $Cs / $total)))%)"
  Ds=$(get_results | grep D | wc -l)
  echo "Ds: $Ds ($(((100 * $Ds / $total)))%)"
  Es=$(get_results | grep E | wc -l)
  echo "Es: $Es ($(((100 * $Es / $total)))%)"
  Fs=$(get_results | grep F | wc -l)
  echo "Fs: $Fs ($(((100 * $Fs / $total)))%)"
  echo "Remaining: $(get_results | grep None | wc -l)"
}

print_stats

Create a wrapper class for Canvas objects

Create better classes which reference objects directly instead of Canvas object IDs.

We can use such objects to create an entire object hierarchy representing a course and its contents.

`results` command

Have an export/results command that can export results for e.g. LADOK (see this issue). It should export CSV formatted results data.

Filter assignment output through pandoc if TTY

If the output (stdout) is going to a TTY, we should filter through pandoc, to convert HTML to plain text.

If there is not TTY, then we output to a pipe or redirection. Then we can send unfiltered HTML.

Interactive grade mode

We could add an argument -i for interactive grading. This would be similar to SpeedGrader. Downloading and viewing any attachments, asks for grade, comments and rubric.

Handle quizzes

Add a quiz command that can create and read quizzes results.

As of now, this limits us to the "old" quizzes system.

Add `calendar` command

This should allow us to modify the calendars, e.g. add appointments and list bookings.

Select user by non-ID

It would be nice to be able to select users by regex on their ID, login and name.

Improve doc-strings

Some parts have doc-strings, others don't. Some doc-strings are OK, others bad.

`login` command fails

$ canvaslms login
Traceback (most recent call last):
  File "/home/dbosk/.local/bin/canvaslms", line 8, in <module>
    sys.exit(main())
  File "/home/dbosk/.local/lib/python3.10/site-packages/canvaslms/cli/__init__.py", line 90, in main
    canvas = Canvas(hostname, token)
  File "/home/dbosk/.local/lib/python3.10/site-packages/canvasapi/canvas.py", line 32, in __init__
    if "api/v1" in base_url:
TypeError: argument of type 'NoneType' is not iterable

`login` command

Must add a login command, similar to ladok, which can guide the user to fixing access tokens etc.

Cache what can be cached

Some things can be cached, like user and assignment information. Cache this type of data.

Add an option to store that cache on disk between sessions.

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.