Security News
Research
Data Theft Repackaged: A Case Study in Malicious Wrapper Packages on npm
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
completion ##########
|pypi-badge| |ci-badge| |codecov-badge| |doc-badge| |pyversions-badge| |license-badge| |status-badge|
Purpose
A library for tracking completion of blocks by learners in Open edX courses.
This repository provides a Django model BlockCompletion
that is intended to be plugged into edx-platform
. It
provides various handlers and services for the recording of completion data. It also provides a DRF API for submitting
completion data in batches.
Enabling in the LMS
By default, the Open edX LMS does not use this library. To turn it on, go to http://your.lms.site/admin/waffle/switch/, and add a new switch with Name completion.enable_completion_tracking
and Active selected.
See Completion Tool <https://edx.readthedocs.io/projects/open-edx-building-and-running-a-course/en/latest/exercises_tools/completion.html>
_ in the Open edX documentation for details on what will happen once enabled.
Getting Started with Development
Please see the Open edX documentation for guidance on Python development <https://docs.openedx.org/en/latest/developers/how-tos/get-ready-for-python-dev.html>
_ in this repo.
To install the completion
app, run these commands from the completion
root directory:
.. code:: bash
pip install -e
To run the test suite:
.. code:: bash
pip install tox
tox # to run only a single environment, do e.g. tox -e py312-django42-drflatest
To use a Django shell to test commands:
.. code:: bash
make install
python manage.py migrate
python manage.py shell
>>> from completion.models import BlockCompletion
>>> <other commands...>
Deploying
Tagged versions of the completion library are released to pypi.org.
To use the latest release in your project, add the following to your pip requirements file:
.. code:: bash
edx-completion
Getting Help
Start by going through the documentation
_ (generated from /docs </docs/index.rst>
_). If you need more help see below.
.. _the documentation: https://docs.openedx.org/projects/completion
License
The code in this repository is licensed under version 3 of the AGPL unless otherwise noted.
Please see LICENSE <LICENSE>
_ for details.
Contributing
Contributions are very welcome.
Please read How To Contribute <https://openedx.org/r/how-to-contribute>
_ for details.
This project is currently accepting all types of contributions, bug fixes, security fixes, maintenance work, or new features. However, please make sure to have a discussion about your new feature idea with the maintainers prior to beginning development to maximize the chances of your change being accepted. You can start a conversation by creating a new issue on this repo summarizing your idea.
The Open edX Code of Conduct
All community members are expected to follow the Open edX Code of Conduct
_.
.. _Open edX Code of Conduct: https://openedx.org/code-of-conduct/
People
The assigned maintainers for this component and other project details may be
found in Backstage
_. Backstage pulls this data from the catalog-info.yaml
file in this repo.
.. _Backstage: https://backstage.openedx.org/catalog/default/component/completion
Reporting Security Issues
Please do not report security issues in public. Please email security@openedx.org.
.. |pypi-badge| image:: https://img.shields.io/pypi/v/edx-completion.svg :target: https://pypi.python.org/pypi/edx-completion/ :alt: PyPI
.. |ci-badge| image:: https://github.com/openedx/completion/actions/workflows/ci.yml/badge.svg?branch=master :target: https://github.com/openedx/completion/actions/workflows/ci.yml?branch=master :alt: CI
.. |codecov-badge| image:: http://codecov.io/github/edx/completion/coverage.svg?branch=master :target: http://codecov.io/github/edx/completion?branch=master :alt: Codecov
.. |doc-badge| image:: https://readthedocs.org/projects/completion/badge/?version=latest :target: https://docs.openedx.org/projects/completion :alt: Documentation
.. |pyversions-badge| image:: https://img.shields.io/pypi/pyversions/edx-completion.svg :target: https://pypi.python.org/pypi/edx-completion/ :alt: Supported Python versions
.. |license-badge| image:: https://img.shields.io/github/license/edx/completion.svg :target: https://github.com/openedx/completion/blob/master/LICENSE.txt :alt: License
.. .. |status-badge| image:: https://img.shields.io/badge/Status-Experimental-yellow .. |status-badge| image:: https://img.shields.io/badge/Status-Maintained-brightgreen .. .. |status-badge| image:: https://img.shields.io/badge/Status-Deprecated-orange .. .. |status-badge| image:: https://img.shields.io/badge/Status-Unsupported-red
.. All enhancements and patches to completion will be documented in this file. It adheres to the structure of http://keepachangelog.com/ , but in reStructuredText instead of Markdown (for ease of incorporation into Sphinx documentation and the PyPI description).
This project adheres to Semantic Versioning (http://semver.org/).
.. There should always be an "Unreleased" section for changes pending release.
clear_learning_context_completion
to enable clearing a learner's
completion for a coursedjango_app_config
get_child_blocks
along with get_child_descriptors
.edx-sphinx-theme
to sphinx-book-theme
since the former is
deprecatedget_key_to_last_completed_block
to return full_block_key
instead of block_key
edx_toggles.toggles
student.models
with common.djangoapps.student.models
.waffle()
, which returned a (now deprecated) WaffleSwitchNamespace. This should only affect tests in edx-platform.ENABLE_COMPLETION_TRACKING_SWITCH
from a LegacyWaffleSwitch
to the updated WaffleSwitch
. We don't expect uses of this updated switch to require changes, unless there are surprise uses of deprecated methods from LegacyWaffleSwitch
.vertical_is_complete
.
get_completable_children
doesn't return nullUpdated the children lookup for vertical_is_complete
to utilize the XBlockCompletion model. There are
three completion modes to consider: EXCLUDED, AGGREGATOR, COMPLETABLE.
Adding recursive lookup for children of a vertical to the vertical_is_complete
method in services.py.
FAQs
A library for tracking completion of blocks by learners in edX courses.
We found that edx-completion 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
Research
The Socket Research Team breaks down a malicious wrapper package that uses obfuscation to harvest credentials and exfiltrate sensitive data.
Research
Security News
Attackers used a malicious npm package typosquatting a popular ESLint plugin to steal sensitive data, execute commands, and exploit developer systems.
Security News
The Ultralytics' PyPI Package was compromised four times in one weekend through GitHub Actions cache poisoning and failure to rotate previously compromised API tokens.