Django app for fetching and verifying tags/skills for video and vertical/unit XBlocks. It implements two openedx_filters pipelines to inject a form into the end unit XBlocks and video XBlocks.
More information about the XBlock skill tagging design can be found in this ADR.
To install skill_tagging
in edx-platform, run
pip install skill_tagging # to install a development version locally in devstack # clone this repo in `<devstack_base_dir>/src` directory and run pip install -e /edx/src/xblock-skill-tagging
This repo depends on discovery service for fetching skills/tags for a given
XBlock which depends on taxonomy-connector plugin for generating and serving these
tags. Setup taxonomy-connector
plugin in course-discovery by installing it
via pip:
pip install taxonomy-connector # to install a development version locally in devstack # clone this repo in `<devstack_base_dir>/src` directory and run pip install -e /edx/src/taxonomy_connector
Whenever a user verifies tags/skills for an XBlock, skill_tagging
emits an
openedx_event called XBLOCK_SKILL_VERIFIED
. This event needs to be consumed
by course discovery to make sure that the verification count is incremented for
that skill/tag.
To produce and consume this event, setup an implementation of event bus
like event_bus_kafka or event_bus_redis. How to start using the Event Bus
has detailed information on setting up event bus. The host would be
edx-platform
while course-discovery
will be the consumer for the event
bus.
Add following configuration values to the host django settings, i.e. LMS
settings: lms/envs/common.py
from .common import XBLOCK_MIXINS
# Below mixin adds the ability to fetch skills/tags from discovery and update them.
XBLOCK_MIXINS += ('skill_tagging.skill_tagging_mixin.SkillTaggingMixin',)
# Set below url to point to discovery service.
TAXONOMY_API_BASE_URL='http://edx.devstack.discovery:18381'
# Configure the maximum number skills/tags to display in the form for a given xblock.
TAXONOMY_API_SKILL_PAGE_SIZE=20
# Copy this as is, this configures the required openedx_filters.
OPEN_EDX_FILTERS_CONFIG = {
"org.openedx.learning.vertical_block.render.completed.v1": {
"fail_silently": False,
"pipeline": [
"skill_tagging.pipeline.AddVerticalBlockSkillVerificationSection",
]
},
"org.openedx.learning.vertical_block_child.render.started.v1": {
"fail_silently": False,
"pipeline": [
"skill_tagging.pipeline.AddVideoBlockSkillVerificationComponent",
]
}
}
# helps to configure probability of displaying the verification forms. Values in range 0 to 1 are allowed, where 0
# means never and 1 means always display. Default value is 0.5 i.e. 50% chance of displaying the form.
SHOW_SKILL_VERIFICATION_PROBABILITY = 0.5
# Optionally update topic name for verification event emitted when a user verifies tags for an xblock.
EVENT_BUS_XBLOCK_VERIFICATION_TOPIC = "learning-custom-xblock-skill-verfied"
# Clone the repository git clone [email protected]:openedx/xblock-skill-tagging.git cd xblock-skill-tagging # Set up a virtualenv using virtualenvwrapper with the same name as the repo and activate it mkvirtualenv -p python3.12 xblock-skill-tagging
# Activate the virtualenv workon xblock-skill-tagging # Grab the latest code git checkout main git pull # Install/update the dev requirements make requirements # Run the tests and quality checks (to verify the status before you make any changes) make validate # Make a new branch for your changes git checkout -b <your_github_username>/<short_description> # Using your favorite editor, edit the code to make your change. vim ... # Run your new tests pytest ./path/to/new/tests # Run all the tests and quality checks make validate # Commit all your changes git commit ... git push # Open a PR and ask for review.
This package is automatically published to pypi whenever a new tag is pushed to the repository.
Published documentation is not available.
If you're having trouble, we have discussion forums at https://discuss.openedx.org where you can connect with others in the community.
Our real-time conversations are on Slack. You can request a Slack invitation, then join our community Slack workspace.
For anything non-trivial, the best path is to open an issue in this repository with as many details about the issue you are facing as you can provide.
https://github.com/openedx/xblock-skill-tagging/issues
For more information about these options, see the Getting Help page.
The code in this repository is licensed under the AGPL 3.0 unless otherwise noted.
Please see LICENSE.txt for details.
Contributions are very welcome. Please read 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.
All community members are expected to follow the Open edX Code of Conduct.
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.
Please do not report security issues in public. Please email [email protected].