From 141f9a4e10cc9cbc0c445b02f59c7c1e5e907fcd Mon Sep 17 00:00:00 2001 From: Maari Tamm Date: Wed, 24 Jul 2024 12:52:11 +0200 Subject: [PATCH] Add support for Open edX Redwood release * Update the import statement for xblock-utils The `xblock-utils` library has been deprecated as a separate package; the `utils` library has been moved into the `XBlock` and should now be imported from `xblock.utils` instead. (https://github.com/openedx/XBlock/issues/675) * Upgrade to XBlock 2 Remove the use of deprecated `xblock.fragment` and direct id_generator parameters. 9https://github.com/openedx/XBlock/pull/680) * Add Python 3.11 to test matrix; Drop Python 3.8 from test matrix * Add a version compatibility matrix to the README Fixes: #38 --- .github/workflows/tox.yml | 6 +++--- README.md | 13 +++++++++++++ markdown_xblock/html.py | 12 ++++++------ requirements/base.txt | 3 +-- requirements/test.txt | 2 +- setup.py | 2 +- tox.ini | 4 ++-- 7 files changed, 27 insertions(+), 15 deletions(-) diff --git a/.github/workflows/tox.yml b/.github/workflows/tox.yml index d7f56db..c6c683f 100644 --- a/.github/workflows/tox.yml +++ b/.github/workflows/tox.yml @@ -10,8 +10,8 @@ jobs: strategy: matrix: python-version: - - '3.8' - '3.10' + - '3.11' pip-version: - 22.0.4 - 23.2.1 @@ -49,10 +49,10 @@ jobs: uses: actions/checkout@v1 - name: Download artifacts uses: actions/download-artifact@v2 - - name: Set up Python 3.8 + - name: Set up Python 3.10 uses: actions/setup-python@v2 with: - python-version: 3.8 + python-version: '3.10' - name: Install dependencies run: | pip install coverage diff --git a/README.md b/README.md index a25a786..7830d23 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,19 @@ This XBlock allows course authors to create and edit course content in Markdown and displays it as HTML. +## Version compatibility matrix + +You must install a supported release of this plugin to match the Open +edX and Tutor version you are deploying. + +| Open edX release | Tutor version | Xblock version | +|------------------|-------------------|----------------| +| Olive | `>=15.0, <16` | `<2.0` | +| Palm | `>=16.0, <17` | `<2.0` | +| Quince | `>=17.0, <18` | `<2.0` | +| Redwood | `>=18.0, <19` | `>=2.0` | + + ## Installation with [Tutor](https://docs.tutor.edly.io) You may install the markdown-xblock to your Tutor environment by adding it to the `OPENEDX_EXTRA_PIP_REQUIREMENTS` list in `config.yml`: ``` diff --git a/markdown_xblock/html.py b/markdown_xblock/html.py index c3aeefc..736171a 100644 --- a/markdown_xblock/html.py +++ b/markdown_xblock/html.py @@ -8,10 +8,10 @@ from django.conf import settings as django_settings from xblock.core import XBlock from xblock.fields import List, Scope, String -from xblock.fragment import Fragment -from xblockutils.resources import ResourceLoader -from xblockutils.settings import XBlockWithSettingsMixin -from xblockutils.studio_editable import StudioEditableXBlockMixin, loader +from web_fragments.fragment import Fragment +from xblock.utils.resources import ResourceLoader +from xblock.utils.settings import XBlockWithSettingsMixin +from xblock.utils.studio_editable import StudioEditableXBlockMixin, loader from .utils import _ @@ -276,7 +276,7 @@ def get_editable_fields(self): return fields @classmethod - def parse_xml(cls, node, runtime, keys, id_generator): + def parse_xml(cls, node, runtime, keys): """ Use `node` to construct a new block. """ @@ -284,7 +284,7 @@ def parse_xml(cls, node, runtime, keys, id_generator): # Read markdown content from file and add to editor. url_name = node.get('url_name', node.get('slug')) - location = id_generator.create_definition(node.tag, url_name) + location = runtime.id_generator.create_definition(node.tag, url_name) filename = node.get('filename') pointer_path = "{category}/{url_path}".format( diff --git a/requirements/base.txt b/requirements/base.txt index 606f4f6..5788dbc 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -1,7 +1,6 @@ # Requirements for app run -xblock-utils<=4.0.0 -xblock-sdk<0.9.0 +xblock-sdk django-statici18n<2.5 edx-i18n-tools<1.4 Mako==1.2.4 diff --git a/requirements/test.txt b/requirements/test.txt index c663775..a5c7ae6 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -11,4 +11,4 @@ mock==3.0.5 # Github requirements django-pyfs<3.2 -xblock-sdk<0.9.0 +xblock-sdk diff --git a/setup.py b/setup.py index f1d6d34..400e0f2 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,7 @@ def package_data(pkg, roots): 'markdown_xblock', ], install_requires=[ - 'XBlock<=1.9', + 'XBlock>=2.0', 'markdown2>=2.3.9', 'Pygments>=2.0.1' ], diff --git a/tox.ini b/tox.ini index 0614211..e0700d1 100644 --- a/tox.ini +++ b/tox.ini @@ -1,10 +1,10 @@ [tox] -envlist = py{38,310,312},flake8,report +envlist = py{310,311,312},flake8,report [gh-actions] python = - 3.8: py38,flake8 3.10: py310,flake8 + 3.11: py311,flake8 3.12: py312,flake8 [flake8]