Tutor plugin for integration of Open edX with a Richie course catalog

Overview

Richie plugin for Tutor

This is a plugin to integrate Richie, the learning portal CMS, with Open edX. The integration takes the form of a Tutor plugin.

Installation

pip install tutor-richie
tutor plugins enable richie

Running the Richie plugin will require that you rebuild the "openedx" Docker image:

tutor config save
tutor images build openedx

This step is necessary to install the Richie connector app in edx-platform.

Then, the platform can be launched as usual with:

tutor local quickstart

You will be able to access your course catalog at http(s)://courses.LMS_HOST. In development, this url will be http://courses.local.overhang.io.

Gettting started

Once your Richie platform is up and running, you will quickly realize that your learning portal is empty. This is because you should first create the corresponding courses and organizations from inside Richie. To do so, start by creating a super user:

tutor local run richie ./sandbox/manage.py createsuperuser

You can then use the credentials you just created at http(s)://yourrichiehost/admin. In development, this is http://courses.local.overhang.io/admin.

Then, refer to the official Richie documentation to learn how to create courses and organizations.

You may also want to fill your learning portal with a demo site -- but be careful not to run this command in production, as it will be difficult to get rid of the demo site afterwards:

# WARNING: do not attempt this in production!
tutor local run richie ./sandbox/manage.py create_demo_site --force

Configuration

This Tutor plugin comes with a few configuration settings:

  • RICHIE_RELEASE_VERSION (default: "v2.8.2")
  • RICHIE_HOST (default: "courses.{{ LMS_HOST }}")
  • RICHIE_MYSQL_DATABASE (default: "richie")
  • RICHIE_MYSQL_USERNAME (default: "richie")
  • RICHIE_ELASTICSEARCH_INDICES_PREFIX (default: "richie")

These defaults should be enough for most users. To modify any one of them, run:

tutor config save --set RICHIE_SETTING_NAME=myvalue

For instance, to customize the domain name at which Richie will run:

tutor config save --set "RICHIE_HOST=mysubdomain.{{ LMS_HOST }}"

Development

Bind-mount volume:

tutor dev bindmount richie /app/richie

Then, run a development server:

tutor dev runserver --volume=/app/richie richie

The Richie development server will be available at http://courses.local.overhang.io:8003.

Troubleshooting

Do you need help with this plugin? Get in touch with the maintainers of Richie by opening a GitHub issue: https://github.com/openfun/richie/issues/

License

This software is licensed under the terms of the AGPLv3. It was developed and is being actively maintained thanks to the sponsorship of France Université Numérique.

France Université Numérique
Comments
  • Transfer ownership to openfun

    Transfer ownership to openfun

    This plugin is about to change considerably in the way it is interfaced with Tutor/Open edX. From now on, the plugin will be managed by the FUN-MOOC team. In practical terms, it means that the following changes will occur:

    • On pypi the plugin will be moved to "tutor-contrib-richie". The existing plugin will be kept for backward compatibility but upgrades will be available only in the contrib package. Thus, end users should uninstall tutor-richie before installing tutor-contrib-richie.
    • The code repo will be moved from github.com/overhangio/tutor-richie to github.com/openfun/tutor-contrib-richie.
    • The "richie" plugin will be removed from the list of default plugins that ship with pip install tutor[full] and the tutor binary. The plugin should then be manually installed from pypi (see above).

    @sampaccoud if you :+1: this PR I'll rename the repo and the pypi package prior to merging the PR.

    @BbrSofiane FYI.

    opened by regisb 5
  • Migrations for tutor-richie post-upgrade

    Migrations for tutor-richie post-upgrade

    @sampaccoud from Richie asked me to post this issue here, from: https://github.com/openfun/richie/issues/1548

    It's particularly important because I may well be going about this all wrong; while trying to solve other issues I upgraded Richie to 2.9.1 from 2.8.2 (the tutor-richie default), and mistakenly updated a MySQL table attempting to fix an issue. I have rectified that by making/running migrations manually which resolved the issue but created further questions.

    I believe overall there's just some confusion between tutor/richie in how the plugin is set up, it would be good to get an understanding for continued support by the Richie team (particularly with the CSRF, Category, and Migration issues I've unconvered).

    opened by sion42x 4
  • Error on sync

    Error on sync

    I'm just install tutor with command tutor local quickstart and add this plugin. New courses don't showed in Richie, than I'm trying to reinitialize and get error. ERROR 8 [richie.sync] [user None] [ip None] sync.py:67 - Could not synchronize course course-v1:ACI+Test_C+2021_12 with Richie. Response: {"resource_link":["Unknown course: TEST_C."]}

    opened by Bodyhealer 1
  • fix: support mysql8 syntax

    fix: support mysql8 syntax

    In MySQL, if the sql_require_primary_key is turned on, no table can exist without a primary key. Since the migration 0005 drops the primary key field before model deletion, the table misses the primary key, hence the migration will fail.

    To prevent migration failure, we swap the primary key before dropping the revisionpluginrevision_ptr field which is the actual primary key. In case the migration need to be reverted, the opposite will happen and we set the revisionpluginrevision_ptr as the primary key.

    When selecting the new primary key, it doesn't really matter what we set, since at the end of the migration we drop the whole table.

    Signed-off-by: Gabor Boros [email protected]

    opened by gabor-boros 0
  • fix: richie-openedx-job not picking the settings

    fix: richie-openedx-job not picking the settings

    This fixes an error when running tutor local init in the context of running the jobs of richie. It would through an error because it didn't catche the correct settings module 'Settings' object has no attribute 'RICHIE_COURSE_HOOK'

    opened by ghassanmas 0
  • Add support for richie site factory

    Add support for richie site factory

    Problem

    Tutor users can deploy and use Richie using this plugin. However, it seems that the only way to deploy a customised instance of Richie is to use a fork of Richie.

    From openfun documentation, the recommended path to customise an instance is to use a Richie site factory. This is not supported by this plugin.

    Thread

    Suggested solution

    This PR is my first attempt at providing support for a Richie site factory.

    My goal is to implement a solution that keeps the user experience simple. Ideally, users just need to provide a RICHIE_FACTORY_REPOSITORY and RICHIE_FACTORY_SITE to deploy their customise instance.

    opened by BbrSofiane 2
Owner
Overhang.IO
Overhang.IO
The docker-based Open edX distribution designed for peace of mind

Tutor: the docker-based Open edX distribution designed for peace of mind Tutor is a docker-based Open edX distribution, both for production and local

Overhang.IO 696 Dec 31, 2022
A Pythonic Data Catalog powered by Ray that brings exabyte-level scalability and fast, ACID-compliant, change-data-capture to your big data workloads.

DeltaCAT DeltaCAT is a Pythonic Data Catalog powered by Ray. Its data storage model allows you to define and manage fast, scalable, ACID-compliant dat

null 45 Oct 15, 2022
All exercises done during the Python 3 course in the Video Course (World 1, 2 and 3)

Python3-cursoemvideo-exercises - All exercises done during the Python 3 course in the Video Course (World 1, 2 and 3)

Renan Barbosa 3 Jan 17, 2022
A QGIS integration plugin for Kart repositories

QGIS Kart Plugin A plugin to work with Kart repositories Installation The Kart plugin is available in the QGIS Plugins server. To install the latest v

Koordinates 27 Jan 4, 2023
JimShapedCoding Python Crash Course 2021

Python CRASH Course by JimShapedCoding - Click Here to Start! This Repository includes the code and MORE exercises on each section of the entire cours

Jim Erg 64 Dec 23, 2022
Assignment for python course, BUPT 2021.

pyFuujinrokuDestiny Assignment for python course, BUPT 2021. Notice username and password must be ASCII encoding. If username exists in database, syst

Ellias Kiri Stuart 3 Jun 18, 2021
This is an online course where you can learn and master the skill of low-level performance analysis and tuning.

Performance Ninja Class This is an online course where you can learn to find and fix low-level performance issues, for example CPU cache misses and br

Denis Bakhvalov 1.2k Dec 30, 2022
An interactive course to git

OperatorEquals' Sandbox Git Course! Preface This Git course is an ongoing project containing use cases that I've met (and still meet) while working in

John Torakis 62 Sep 19, 2022
Do you need a screensaver for CircuitPython? Of course you do

circuitpython_screensaver Do you need a screensaver for CircuitPython? Of course you do Demo video of dvdlogo screensaver: screensaver_dvdlogo.mp4 Dem

Tod E. Kurt 8 Sep 2, 2021
Convex Optimisation MVA course - Assignment

Convex Optimisation MVA course - Assignment This repository contains the coding files of the third assignment in the MVA Convex Optimisation course. U

null 1 Nov 27, 2021
Streamlit apps done following data professor's course on YouTube

streamlit-twelve-apps Streamlit apps done following data professor's course on YouTube Español Curso de apps de data science hecho por Data Professor

Federico Bravin 1 Jan 10, 2022
The last walk-through project in code institute diploma course

Welcome Rocky.C, This is the Code Institute student template for Gitpod. We have preinstalled all of the tools you need to get started. It's perfectly

Rocky.C 1 Jan 31, 2022
This is the course project of AI3602: Data Mining of SJTU

This is the course project of AI3602: Data Mining of SJTU. Group Members include Jinghao Feng, Mingyang Jiang and Wenzhong Zheng.

null 2 Jan 13, 2022
This is sample project needed for security course to connect web service to database

secufaku This is sample project needed for security course to "connect web service to database". Why it suits alignment purpose It connects to postgre

Mark Nicholson 6 May 15, 2022
Module 2's katas from Launch X's python introduction course.

Module2Katas Module 2's katas from Launch X's python introduction course. Virtual environment creation process (on Windows): Create a folder in any de

Javier Méndez 1 Feb 10, 2022
An early stage integration of Hotwire Turbo with Django

Note: This is not ready for production. APIs likely to change dramatically. Please drop by our Slack channel to discuss!

Hotwire for Django 352 Jan 6, 2023
Integration of Hotwire's Turbo library with Flask.

turbo-flask Integration of Hotwire's Turbo library with Flask, to allow you to create applications that look and feel like single-page apps without us

Miguel Grinberg 240 Jan 6, 2023
Home Assistant integration for spanish electrical data providers (e.g., datadis)

homeassistant-edata Esta integración para Home Assistant te permite seguir de un vistazo tus consumos y máximas potencias alcanzadas. Para ello, se ap

VMG 163 Jan 5, 2023
This application demonstrates IoTVAS device discovery and security assessment API integration with the Rapid7 InsightVM.

Introduction This repository hosts a sample application that demonstrates integrating Firmalyzer's IoTVAS API with the Rapid7 InsightVM platform. This

Firmalyzer BV 4 Nov 9, 2022