Course Discovery plugin for Tutor
This plugin was developed and open sourced to the community thanks to the generous support of E-ducation. Thank you!
This plugin requires tutor>=3.6.0. If you have installed tutor from a pre-compiled binary, it already comes bundled with the discovery plugin. Otherwise:
pip install tutor-discovery
Then, to enable this plugin, run:
tutor plugins enable discovery
You will have to re-generate the environment:
tutor config save
The, run migrations:
tutor local init
This last step is unnecessary if you run instead tutor local quickstart.
Creating a user
The discovery user interface will be available at http://discovery.localhost for a local instance, and at DISCOVERY_HOST (by default: http(s)://discovery.<your lms host>) in production. In order to run commands from the UI, a user must be created:
tutor local run discovery ./manage.py createsuperuser
Then, you must login with this user at http://discovery.localhost/admin.
Alternatively, you can login with oauth2 using a pre-existing user created on the LMS/CMS by accessing http(s)://discovery.<your lms host>/login. To do so, the proper domain names must exist and point to the production server.
tutor local run discovery ./manage.py refresh_course_metadata --partner_code=dev tutor local run discovery ./manage.py update_index --disable-change-limit
In order to cache programs in the LMS, you will need to manually create a catalog integration. This step should be performed just once:
tutor local run lms ./manage.py lms create_catalog_integrations --enabled \ --internal_api_url=http://discovery:8000 \ --service_username=lms_catalog_service_user
tutor local run lms ./manage.py lms cache_programs
To debug the course discovery service, you are encouraged to mount the course-discovery repo from the host in the development container:
tutor dev runserver -v ~/projets/openedx/repos/course-discovery/:/openedx/discovery discovery
You can then access the development server at http://localhost:8381. Feel free to add breakpoints (import pdb; pdb.set_trace()) anywhere in your source code to debug your application.
Alternatively, you may bind-mount a local course-discovery repository by adding the following to $(tutor config printroot)/env/dev/docker-compose.override.yml:
version: "3.7" services: discovery: volumes: - /path/to/course-discovery/:/openedx/course-discovery discovery-assets: volumes: - /path/to/course-discovery/:/openedx/course-discovery
Once a local repository is mounted in the image, you will have to install nodejs dependencies and collect static assets:
tutor dev run discovery npm install --development tutor dev run discovery make static.dev
This work is licensed under the terms of the GNU Affero General Public License (AGPL).