Skip to content

Repository files navigation

CanvasRobot

Library which uses Canvasapi (minimally patched to allow more flexible user search) to provide a CanvasRobot class for GUI and commandline use. You can install the commandline tools canvasrobot and urltransform (special edition to translate specific video urls in Canvas pages) using UV

Setup

Before installing the tools, you may need to download a package manager to install dependencies—pieces of code that the application relies on. On macOS, we will use Homebrew and UV; on Windows, we will only use UV. Then, we will install the CanvasRobot tools.

To run the following prompts, one must copy and paste the commands in the command line and press the {enter} key after each line. During the setup, it might be necessary to restart the terminal after installing homebrew, uv, or transcribetools to be able to proceed.

Install UV

On Windows

  1. Open Windows PowerShell or the Command shell. How?

  2. Run prompt to install uv:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

On macOS:

  1. Open Terminal

  2. Run prompt to install brew:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  1. Run prompt to install uv:
brew install uv

Install the tools

  1. Install the (commandline) tools in this project.
uv tool install canvasrobot

canvasrobot --help
urltransform --help

Uses

  • CanvasAPI
  • rich (commandline output)
  • rich_click (commandline input)
  • keyring (safe store for the Canvas API key)
  • pydal (to create a local SQLite database)
  • pywebview (HTML reporting)
  • [opt] pymemcache (install with uv add pymemcache to add caching the Canvas interaction, needs memcached installed)

Used

In word2quiz library. (Not yet ready for general use...)

Examples using the CanvasRobot class

import rich
import canvasrobot as cr

if __name__ == '__main__':

    console = rich.console.Console(width=160, force_terminal=True)

    robot = cr.CanvasRobot(reset_api_keys=False,
                           console=console)

    # robot.update_database_from_canvas()
    robot.create_folder_in_all_courses('Tentamens')

    # result = robot.enroll_in_course("", 4472, 'u752058',
    # 'StudentEnrollment') #  (enrollment={'type': 'StudentEnrollment'}
    
    # user = robot.search_user('u752058')
    # print(user)
    # if not user:
    #   print(robot.errors)

    #COURSE_ID = 9999  # test course
    #result = robot.create_folder_in_course_files(COURSE_ID, 'Tentamens')

    # print(robot.course_metada(COURSE_ID))
    # print(robot.unpublish_folderitems_in_course(COURSE_ID,
    #                                            foldername,
    #                                            files_too=True))

    #course = robot.get_course(COURSE_ID)
    # tab = robot.get_course_tab_by_label(COURSE_ID, "Files")
    # print(tab.visibility)

    # for course_id in (COURSE_ID, COURSE_ID2):
    #     result = robot.create_folder_in_course_files(course_id, 'Tentamens')

    # result = robot.unpublish_subfolder_in_all_courses(foldername,
    #                                                  files_too=True,
    #                                                  check_only=True)
    # if course_ids_missing_folder:
    #    logging.info(f"Courses with missing folder {foldername}: {course_ids_missing_folder}")

    # QUIZZES -----------------------------
    # filename = 'Q_A.docx'
    # robot.create_quizzes_from_document(filename=filename,
    #                                    course_id=COURSE_ID,
    #                                    question_format='Vraag {}. Vertaal:',
    #                                    adjust_fontsize=True,
    #                                    testrun=False
    #                                    )

[PyPI version]

About

Class to add,delete,read users, files, statistics and quizzes to Canvas courses using the Canvasapi library

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages