Set default advanced modules list in Open edX tutor Palm

Hello everyone,

I’m using Open edX tutor Palm under Ubuntu. I recently installed some xblocks and I would like to enable them by default for all courses.

I have read this article: Set Advanced Module List by Default in Open edX

Which is exactly what I need but I don’t know how to do it in Open edX tutor. Can anybody help me?

Thank you.

Hi @stah :smile:

Unfortunately the article you found is out of date. These instructions should work:

  1. Create a small Tutor plugin to append your XBlocks to the settings.ADVANCED_PROBLEM_TYPES list (see Setting default advanced_modules (xblocks)) .
    Example plugin: GitHub - pomegranited/tutor-contrib-enable-feature-flag: Demonstrates how to add a feature flag to Tutor
  2. Add your XBlocks as “extra requirements” to the platform.
    The official Tutor docs recommend doing this using private.txt, but since you have to write a plugin to enable these XBlocks anyway, you can add them to your plugin’s patches/openedx-dockerfile-post-python-requirements file to keep everything together.
  3. Install your new plugin to your Tutor virtualenv, and enable it.
  4. Rebuild the openedx image by running tutor images build openedx (ref).
2 Likes

Thank you so much Jillian!

Hello @jill, I had this exact same question too. Unfortunately the example plugin you cited is waaaay too complicated for me to understand what it’s doing. Also, the tutor documentation doesn’t make it clear how to map the file you want to edit (e.g. common.py) to a tutor plugin.

I’m thinking the answer here should be something pretty simple like:

name: default_advanced_modules
version: 0.1.0
patches:
  openedx-common-settings: |
    ADVANCED_PROBLEM_TYPES = [
        {
        'component': 'completion',
        'boilerplate_name': None
        },
        {
        'component': 'markdown',
        'boilerplate_name': None
        },
    ]

etc. Can you correct my syntax there? (because I haven’t been able to figure it out)

(Also I should perhaps be clear that I don’t care about appending to the existing list, I just want it to be the same for every class, with an emphasis on new classes, so that instructors don’t need to set it as a first step when creating a new class.)

I broke down and tried to do this via a forked branch change (since I have to fork to fix other things anyway). My diff to common.py looked like:

diff --git a/cms/envs/common.py b/cms/envs/common.py
index b1b8c2cab0..70e3749ae6 100644
--- a/cms/envs/common.py
+++ b/cms/envs/common.py
@@ -1984,6 +1984,18 @@ ADVANCED_PROBLEM_TYPES = [
     {
         'component': 'staffgradedxblock',
         'boilerplate_name': None
+    },
+    {
+        'component': 'markdown',
+        'boilerplate_name': None
+    },
+    {
+        'component': 'library_content',
+        'boilerplate_name': None
     }
 ]

But it still didn’t actually change the default values in the Advanced Modules List when an instructor creates a new class! So I feel like probably this isn’t the right variable?