learning-paths-plugin
#####################
Purpose
*******
A Learning Path consists of a selection of courses bundled together for
learners to progress through. This plugin enables the creation and
management of Learning Paths.
License
*******
The code in this repository is licensed under the Not open source unless
otherwise noted.
Please see `LICENSE.txt <LICENSE.txt>`_ for details.
Installation and Configuration
******************************
1. **Clone the Repository**
Clone the repository containing the plugin to the `src` directory under your devstack root:
.. code-block:: bash
git clone <repository_url> <devstack_root>/src/learning-paths-plugin
2. **Install the Plugin**
Inside the LMS shell, install the plugin by running:
.. code-block:: bash
pip install -e /edx/src/learning-paths-plugin/
3. **Run Migrations for the Plugin**
After installing the plugin, run the database migrations for `learning_paths`:
.. code-block:: bash
./manage.py lms migrate learning_paths
4. **Run Completion Aggregator Migrations**
Ensure that the **completion aggregator** service is also up to date by running its migrations:
.. code-block:: bash
./manage.py lms migrate completion_aggregator
.. warning::
Please read the section about `synchronous vs asynchronous modes <https://github.com/open-craft/openedx-completion-aggregator/?tab=readme-ov-file#synchronous-vs-asynchronous-calculations>`_
for completion aggregator before enabling this in a production environment. Running in synchronous mode can lead to an outage.
Once these steps are complete, the Learning Paths plugin should be successfully installed and ready to use.
Usage
*****
After installing the plugin, a learning path can be created in the django admin panel `{LMS_URL}/admin/learning_paths/learningpath/`.
Change Log
##########
..
All enhancements and patches to learning_paths will be documented
in this file. It adheres to the structure of https://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 (https://semver.org/).
.. There should always be an "Unreleased" section for changes pending release.
Unreleased
**********
*
0.3.3 - 2025-05-23
******************
Changed
=======
* Changed line length from 80 to 120 characters.
0.3.2 - 2025-05-02
******************
Added
=====
* Course key selection in admin forms.
* Learning Path selection field in admin forms.
* Enrollment status to the Learning Path list and retrieve APIs.
* Invite-only functionality for Learning Paths.
* Course enrollment API.
Changed
=======
* The Learning Path ``subtitle`` to ``TextField`` and made it optional.
* The image URL field to ``ImageField``.
* The user field on the admin enrollments page to raw ID, to prevent the page
from retrieving all users in the system.
Removed
=======
* The ``slug`` field from the Learning Path model.
* The UUID compatibility layer from Learning Path keys.
0.3.1 - 2025-04-14
******************
Added
=====
* API for listing and retrieving Learning Paths.
Fixed
=====
* Automatically create grading criteria for Learning Paths.
Changed
=======
* Replaced relative due dates with actual due dates from course runs.
0.3.0 - 2025-04-03
******************
Changed
=======
* Replaced Learning Path UUID with LearningPathKey.
0.2.3 - 2025-03-31
******************
Added
=====
* Enrollment API.
0.2.2 - 2024-12-05
******************
Added
=====
* User grade API
0.2.1 - 2024-10-28
******************
Added
=====
* Progress API
0.2.0 - 2024-01-23
******************
Added
=====
* Database models
* Django Admin interface
Raw data
{
"_id": null,
"home_page": "https://github.com/open-craft/learning-paths-plugin",
"name": "learning-paths-plugin",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.11",
"maintainer_email": null,
"keywords": "Python edx",
"author": "OpenCraft",
"author_email": "help@opencraft.com",
"download_url": "https://files.pythonhosted.org/packages/89/36/9b6613afe18081ceb3c72636f60d798f49df89043ef0b8e9fe3c264b7941/learning_paths_plugin-0.3.3.tar.gz",
"platform": null,
"description": "learning-paths-plugin\n#####################\n\nPurpose\n*******\n\nA Learning Path consists of a selection of courses bundled together for\nlearners to progress through. This plugin enables the creation and\nmanagement of Learning Paths.\n\nLicense\n*******\n\nThe code in this repository is licensed under the Not open source unless\notherwise noted.\n\nPlease see `LICENSE.txt <LICENSE.txt>`_ for details.\n\nInstallation and Configuration\n******************************\n\n1. **Clone the Repository**\n\n Clone the repository containing the plugin to the `src` directory under your devstack root:\n\n .. code-block:: bash\n\n git clone <repository_url> <devstack_root>/src/learning-paths-plugin\n\n2. **Install the Plugin**\n\n Inside the LMS shell, install the plugin by running:\n\n .. code-block:: bash\n\n pip install -e /edx/src/learning-paths-plugin/\n\n3. **Run Migrations for the Plugin**\n\n After installing the plugin, run the database migrations for `learning_paths`:\n\n .. code-block:: bash\n\n ./manage.py lms migrate learning_paths\n\n4. **Run Completion Aggregator Migrations**\n\n Ensure that the **completion aggregator** service is also up to date by running its migrations:\n\n .. code-block:: bash\n\n ./manage.py lms migrate completion_aggregator\n\n .. warning::\n\n Please read the section about `synchronous vs asynchronous modes <https://github.com/open-craft/openedx-completion-aggregator/?tab=readme-ov-file#synchronous-vs-asynchronous-calculations>`_\n for completion aggregator before enabling this in a production environment. Running in synchronous mode can lead to an outage.\n\n\nOnce these steps are complete, the Learning Paths plugin should be successfully installed and ready to use.\n\n\nUsage\n*****\nAfter installing the plugin, a learning path can be created in the django admin panel `{LMS_URL}/admin/learning_paths/learningpath/`.\n\n\nChange Log\n##########\n\n..\n All enhancements and patches to learning_paths will be documented\n in this file. It adheres to the structure of https://keepachangelog.com/ ,\n but in reStructuredText instead of Markdown (for ease of incorporation into\n Sphinx documentation and the PyPI description).\n\n This project adheres to Semantic Versioning (https://semver.org/).\n\n.. There should always be an \"Unreleased\" section for changes pending release.\n\nUnreleased\n**********\n\n*\n\n0.3.3 - 2025-05-23\n******************\n\nChanged\n=======\n\n* Changed line length from 80 to 120 characters.\n\n0.3.2 - 2025-05-02\n******************\n\nAdded\n=====\n\n* Course key selection in admin forms.\n* Learning Path selection field in admin forms.\n* Enrollment status to the Learning Path list and retrieve APIs.\n* Invite-only functionality for Learning Paths.\n* Course enrollment API.\n\nChanged\n=======\n\n* The Learning Path ``subtitle`` to ``TextField`` and made it optional.\n* The image URL field to ``ImageField``.\n* The user field on the admin enrollments page to raw ID, to prevent the page\n from retrieving all users in the system.\n\nRemoved\n=======\n\n* The ``slug`` field from the Learning Path model.\n* The UUID compatibility layer from Learning Path keys.\n\n0.3.1 - 2025-04-14\n******************\n\nAdded\n=====\n\n* API for listing and retrieving Learning Paths.\n\nFixed\n=====\n\n* Automatically create grading criteria for Learning Paths.\n\nChanged\n=======\n\n* Replaced relative due dates with actual due dates from course runs.\n\n0.3.0 - 2025-04-03\n******************\n\nChanged\n=======\n\n* Replaced Learning Path UUID with LearningPathKey.\n\n0.2.3 - 2025-03-31\n******************\n\nAdded\n=====\n\n* Enrollment API.\n\n0.2.2 - 2024-12-05\n******************\n\nAdded\n=====\n\n* User grade API\n\n0.2.1 - 2024-10-28\n******************\n\nAdded\n=====\n\n* Progress API\n\n0.2.0 - 2024-01-23\n******************\n\nAdded\n=====\n\n* Database models\n* Django Admin interface\n",
"bugtrack_url": null,
"license": null,
"summary": "Learning Paths plugin",
"version": "0.3.3",
"project_urls": {
"Homepage": "https://github.com/open-craft/learning-paths-plugin"
},
"split_keywords": [
"python",
"edx"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "9fee33d25be871a2cd51a145213650667c59a2c90f78cde1ba9bf4afc5741440",
"md5": "d288dd0bd0afb3292dbe09530a966c46",
"sha256": "44c690c10ec46d5817c3268926b061d61293e961b461958637ea5c50dac7ce44"
},
"downloads": -1,
"filename": "learning_paths_plugin-0.3.3-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "d288dd0bd0afb3292dbe09530a966c46",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.11",
"size": 32822,
"upload_time": "2025-05-27T11:55:33",
"upload_time_iso_8601": "2025-05-27T11:55:33.605914Z",
"url": "https://files.pythonhosted.org/packages/9f/ee/33d25be871a2cd51a145213650667c59a2c90f78cde1ba9bf4afc5741440/learning_paths_plugin-0.3.3-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "89369b6613afe18081ceb3c72636f60d798f49df89043ef0b8e9fe3c264b7941",
"md5": "9e4bab97170a4e6acb324de897b80288",
"sha256": "cf848b72015172d639f8b7e33ae65137fec700738dd8d3ef4d94f727bf603442"
},
"downloads": -1,
"filename": "learning_paths_plugin-0.3.3.tar.gz",
"has_sig": false,
"md5_digest": "9e4bab97170a4e6acb324de897b80288",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.11",
"size": 26361,
"upload_time": "2025-05-27T11:55:34",
"upload_time_iso_8601": "2025-05-27T11:55:34.527653Z",
"url": "https://files.pythonhosted.org/packages/89/36/9b6613afe18081ceb3c72636f60d798f49df89043ef0b8e9fe3c264b7941/learning_paths_plugin-0.3.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-05-27 11:55:34",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "open-craft",
"github_project": "learning-paths-plugin",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"tox": true,
"lcname": "learning-paths-plugin"
}