![Oracle Drags Its Feet in the JavaScript Trademark Dispute](https://cdn.sanity.io/images/cgdhsj6q/production/919c3b22c24f93884c548d60cbb338e819ff2435-1024x1024.webp?w=400&fit=max&auto=format)
Security News
Oracle Drags Its Feet in the JavaScript Trademark Dispute
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
A Canvas course management tool.
pip install easel-cli
To install from the root of the repository:
pip install -e .
When connected to a Canvas course, easel will read in a yaml file and create the
corresponding component in Canvas on that course. Currently, easel requires you
to run its commands from the root of your course directory (where the component
subdirectories are located). This is where easel will initialize its database:
.easeldb
.
For each of these operations, refer to their detailed description and usage below.
easel login <canvas_base_url> <api_token>
easel init
easel course add <canvas_course_url>
easel push [component_filepath ...]
Easel makes it easy to not have to start from scratch by first pulling the material from a previous course and pushing it to a new course:
easel login <canvas_base_url> <api_token>
easel init
easel course add <previous_canvas_course_url>
easel pull
easel course add <new_canvas_course_url>
easel --course <new_course_id> push
easel course remove <old_course_id>
These are the components currently managed by easel. For configuration, see the linked documentation.
easel login <canvas_base_url> <api_token>
E.g.,
easel login https://school.instructure.com yourT0kenH3re
Only needs to be run once per client machine. Records the Canvas url and token to be used later. Canvas tokens can be generated in "Account->Settings->+New Access Token".
easel init
Run this one time per course directory. It will initialize the easel database in the current directory. It will also create subdirectories for each Canvas component type that easel supports.
At this time, easel requires components to be organized by directory but this is hopefully a temporary restriction.
easel course add <canvas_course_url>
E.g.,
easel course add https://school.instructure.com/courses/615446
Hooks up the database to a Canvas course. Run this one time per Canvas course (once per section taught per semester).
easel course list
List all Canvas courses that are tracked in the database.
Reads in and pushes a specific component (or multiple components) to the configured courses. A push reads the information of each component stored locally and for each one, makes a POST or PUT request to Canvas, depending on whether you are creating or updating the component in the Canvas course.
easel push
or to push to a specific course:
easel --course <course_id> push
To push a specific component or components:
easel push [component_filepath ...]
E.g.,
easel push pages/lesson-1.yaml
Notes on pushing files:
files
directory will be pushed as they are (ignoring
the files
parent directory).--hidden
flag to unpublish the file(s) as hidden when pushed (by
default canvas publishes files when you upload them).easel
will push all of its child files.Course filtering:
Use the --course
flag (alternatively -c
) to specify a subset of your
courses. I prefer to use the section number to identify a course. For example,
to push a page to only sections 01 and 02, I would use this command:
easel push -c 01 -c 02 pages/lesson-1.yaml
Remove a given component(s) from the canvas course. This does not delete the yaml file or the local database entry for the component. But it will remove the database record which tracks that component in Canvas (i.e., it's Canvas ID).
easel remove [component_filepath ...]
E.g.,
easel remove pages/lesson-1.yaml
Note for files:
easel
will remove all of its child files (however
the empty directory will remain in Canvas).For now it is required to store component files in separate directories, named
for their component type (e.g., store definition files for pages in a directory
called pages
). This requirement may be removed in the future.
Each individual component is defined by a single file using yaml. When a
component has some associated body/description content, it should be included in
markdown as part of the component's yaml configuration using a multiline string
(see the examples
directory for examples).
When specifying dates (e.g., due_at, unlock_at, lock_at), ISO 8601 format should be used. This is temporary until I can build out an internal date management system.
I'll try to keep this list in order, with the items I'm prioritizing to get done sooner listed first.
__iter__
from quiz_question.py
- question_name: g1
question_type: group
questions:
- quiz_questions/functions.yaml
- quiz_questions/functions.yaml
- quiz_questions/functions.yaml
The preprocessor would intercept the question_type
(it's invalid anyway) and
make the api call to create the group, passing in the questions. So remember
that in case they open up question groups to work by specifying a question
directly.FAQs
A Canvas course management tool
We found that easel-cli demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Oracle seeks to dismiss fraud claims in the JavaScript trademark dispute, delaying the case and avoiding questions about its right to the name.
Security News
The Linux Foundation is warning open source developers that compliance with global sanctions is mandatory, highlighting legal risks and restrictions on contributions.
Security News
Maven Central now validates Sigstore signatures, making it easier for developers to verify the provenance of Java packages.