diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index 8861e6c58..b05936c33 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -9,7 +9,7 @@ jobs: fail-fast: false max-parallel: 1 matrix: - tutor_version: ['<21.0.0', '<22.0.0', 'main'] + tutor_version: ['<22.0.0', '<23.0.0', 'main'] steps: - name: Run Integration Tests uses: eduNEXT/integration-test-in-tutor@v0.1.3 diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 8f350afe2..10d10f902 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -37,7 +37,8 @@ jobs: make install-dev-dependencies - name: Run Python Tests run: | - export TOXENV=${TOX_ENV//./} + export TOX_ENV=${TOX_ENV//./} + export TOXENV=$TOX_ENV make run-tests env: TOX_ENV: py${{matrix.python-version}}-django${{matrix.django}} diff --git a/CHANGELOG.md b/CHANGELOG.md index ddb45bb35..f60902c3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,14 @@ Please do not update the unreleased notes. +## [v12.4.0](https://github.com/eduNEXT/eox-core/compare/v12.3.1...v12.4.0) - (2026-06-24) + +### Changed + +- **Verawood Support**: Update integration tests to use new Verawood release with Tutor, + update GitHub Actions versions, and update integration-test workflow to add Verawood + and remove oldest Tutor version support. + ## [v12.3.1](https://github.com/eduNEXT/eox-core/compare/v12.3.0...v12.3.1) - (2026-01-20) ### Changed diff --git a/README.rst b/README.rst index 188b00f23..51eca8f33 100644 --- a/README.rst +++ b/README.rst @@ -77,7 +77,9 @@ Compatibility Notes +------------------+---------------+ | Teak | >= 12.0.0 | +------------------+---------------+ -| Ulmo | >= 12.2.0 | +| Ulmo | >= 12.2.0 | ++------------------+---------------+ +| Verawood | >= 12.4.0 | +------------------+---------------+ The plugin is configured for the latest release (Teak). The following changes in the plugin settings should be applied in order to be used for previous releases. diff --git a/eox_core/__init__.py b/eox_core/__init__.py index 85ce391a7..ec9663d33 100644 --- a/eox_core/__init__.py +++ b/eox_core/__init__.py @@ -1,4 +1,4 @@ """ Init for main eox-core app """ -__version__ = '12.3.1' +__version__ = '12.4.0' diff --git a/fixtures/initial_data.json b/fixtures/initial_data.json index 7b8eca249..00f078a30 100644 --- a/fixtures/initial_data.json +++ b/fixtures/initial_data.json @@ -59,32 +59,6 @@ "name": "edX" } }, - { - "model": "organizations.organization", - "pk": 3, - "fields": { - "created": "2024-09-11T17:15:30.708Z", - "modified": "2024-09-11T17:15:30.708Z", - "name": "OpenedX", - "short_name": "openedx", - "description": null, - "logo": "", - "active": true - } - }, - { - "model": "organizations.organization", - "pk": 4, - "fields": { - "created": "2024-09-11T17:15:35.694Z", - "modified": "2024-09-11T17:15:35.694Z", - "name": "edX", - "short_name": "edx", - "description": null, - "logo": "", - "active": true - } - }, { "model": "eox_tenant.tenantconfig", "pk": 1, diff --git a/requirements/base.txt b/requirements/base.txt index 21162ebb6..fef3d45e2 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -8,25 +8,25 @@ amqp==5.3.1 # via kombu appdirs==1.4.4 # via fs -asgiref==3.10.0 +asgiref==3.11.1 # via django -attrs==25.4.0 +attrs==26.1.0 # via openedx-events -billiard==4.2.2 +billiard==4.2.4 # via celery -celery==5.5.3 +celery==5.6.3 # via # -r requirements/base.in # event-tracking -certifi==2025.10.5 +certifi==2026.6.17 # via requests cffi==2.0.0 # via # cryptography # pynacl -charset-normalizer==3.4.3 +charset-normalizer==3.4.7 # via requests -click==8.3.0 +click==8.4.2 # via # -r requirements/base.in # celery @@ -41,17 +41,18 @@ click-plugins==1.1.1.2 # via celery click-repl==0.3.0 # via celery -code-annotations==2.3.0 +code-annotations==2.3.2 # via edx-toggles -cryptography==46.0.2 +cryptography==49.0.0 # via # jwcrypto # pyjwt + # social-auth-core defusedxml==0.7.1 # via # python3-openid # social-auth-core -django==5.2.7 +django==5.2.15 # via # -c requirements/constraints.txt # -r requirements/base.in @@ -94,7 +95,7 @@ django-oauth-toolkit==1.7.1 # -r requirements/base.in django-oauth2-provider==0.2.6.1 # via -r requirements/base.in -django-simple-history==3.10.1 +django-simple-history==3.12.0 # via edx-proctoring django-waffle==5.0.0 # via @@ -103,9 +104,9 @@ django-waffle==5.0.0 # edx-drf-extensions # edx-proctoring # edx-toggles -django-webpack-loader==3.2.1 +django-webpack-loader==3.2.4 # via edx-proctoring -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.in # drf-jwt @@ -117,9 +118,9 @@ dnspython==2.8.0 # via pymongo drf-jwt==1.19.2 # via edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.in edx-ccx-keys==2.0.2 # via openedx-events @@ -136,7 +137,7 @@ edx-drf-extensions==10.6.0 # -r requirements/base.in # edx-proctoring # edx-when -edx-opaque-keys[django]==3.0.0 +edx-opaque-keys[django]==4.0.0 # via # edx-ccx-keys # edx-drf-extensions @@ -145,19 +146,19 @@ edx-opaque-keys[django]==3.0.0 # openedx-events edx-proctoring==5.2.0 # via -r requirements/base.in -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via edx-proctoring -edx-toggles==5.4.1 +edx-toggles==6.0.0 # via event-tracking -edx-when==3.0.0 +edx-when==4.0.0 # via edx-proctoring -event-tracking==3.3.0 +event-tracking==4.0.2 # via edx-proctoring -fastavro==1.12.1 +fastavro==1.12.2 # via openedx-events fs==2.4.16 # via xblock -idna==3.11 +idna==3.18 # via requests inflection==0.5.1 # via drf-yasg @@ -165,13 +166,13 @@ jinja2==3.1.6 # via code-annotations jsonfield==3.2.0 # via edx-proctoring -jwcrypto==1.5.6 +jwcrypto==1.5.8 # via django-oauth-toolkit -kombu==5.5.4 +kombu==5.6.2 # via celery -lxml==6.0.2 +lxml==6.1.1 # via xblock -mako==1.3.10 +mako==1.3.12 # via xblock markupsafe==3.0.3 # via @@ -187,30 +188,30 @@ openedx-events==10.5.0 # via # -r requirements/base.in # event-tracking -packaging==25.0 +packaging==26.2 # via # drf-yasg # kombu prompt-toolkit==3.0.52 # via click-repl -psutil==7.1.0 +psutil==7.2.2 # via edx-django-utils -pycparser==2.23 +pycparser==3.0 # via cffi pycryptodomex==3.23.0 # via edx-proctoring -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.13.0 # via # drf-jwt # edx-drf-extensions # edx-proctoring # edx-rest-api-client # social-auth-core -pymongo==4.15.3 +pymongo==4.17.0 # via # edx-opaque-keys # event-tracking -pynacl==1.6.0 +pynacl==1.6.2 # via edx-django-utils python-dateutil==2.9.0.post0 # via @@ -223,7 +224,7 @@ python-slugify==8.0.4 # via code-annotations python3-openid==3.2.0 # via social-auth-core -pytz==2025.2 +pytz==2026.2 # via # drf-yasg # edx-proctoring @@ -234,7 +235,7 @@ pyyaml==6.0.3 # code-annotations # drf-yasg # xblock -requests==2.32.5 +requests==2.34.2 # via # django-oauth-toolkit # edx-drf-extensions @@ -249,7 +250,7 @@ semantic-version==2.10.0 # via edx-drf-extensions shortuuid==1.0.13 # via django-oauth2-provider -simplejson==3.20.2 +simplejson==4.1.1 # via xblock six==1.17.0 # via @@ -258,11 +259,11 @@ six==1.17.0 # event-tracking # fs # python-dateutil -social-auth-core==4.8.1 +social-auth-core==5.0.1 # via -r requirements/base.in -sqlparse==0.5.3 +sqlparse==0.5.5 # via django -stevedore==5.5.0 +stevedore==5.8.0 # via # code-annotations # edx-django-utils @@ -273,24 +274,26 @@ typing-extensions==4.15.0 # via # edx-opaque-keys # jwcrypto -tzdata==2025.2 +tzdata==2026.2 # via kombu +tzlocal==5.4.3 + # via celery uritemplate==4.2.0 # via drf-yasg -urllib3==2.5.0 +urllib3==2.7.0 # via requests vine==5.1.0 # via # amqp # celery # kombu -wcwidth==0.2.14 +wcwidth==0.8.1 # via prompt-toolkit -web-fragments==3.1.0 +web-fragments==4.0.0 # via xblock -webob==1.8.9 +webob==1.8.10 # via xblock -xblock==5.2.0 +xblock==6.1.0 # via edx-when # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/django52.txt b/requirements/django52.txt index 9109eb206..f480bed06 100644 --- a/requirements/django52.txt +++ b/requirements/django52.txt @@ -1 +1 @@ -django==5.2.7 +django==5.2.15 diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index e97cb1b3d..f995567a9 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,19 +4,21 @@ # # make upgrade # -build==1.3.0 +build==1.5.0 # via pip-tools -click==8.3.0 +click==8.4.2 # via pip-tools -packaging==25.0 - # via build -pip-tools==7.5.1 +packaging==26.2 + # via + # build + # wheel +pip-tools==7.5.3 # via -r requirements/pip-tools.in pyproject-hooks==1.2.0 # via # build # pip-tools -wheel==0.45.1 +wheel==0.47.0 # via pip-tools # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/test.txt b/requirements/test.txt index aa3801639..144a54c58 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -12,26 +12,26 @@ appdirs==1.4.4 # via # -r requirements/base.txt # fs -asgiref==3.10.0 +asgiref==3.11.1 # via # -r requirements/base.txt # django # django-countries astroid==3.3.11 # via pylint -attrs==25.4.0 +attrs==26.1.0 # via # -r requirements/base.txt # openedx-events -billiard==4.2.2 +billiard==4.2.4 # via # -r requirements/base.txt # celery -celery==5.5.3 +celery==5.6.3 # via # -r requirements/base.txt # event-tracking -certifi==2025.10.5 +certifi==2026.6.17 # via # -r requirements/base.txt # requests @@ -40,11 +40,11 @@ cffi==2.0.0 # -r requirements/base.txt # cryptography # pynacl -charset-normalizer==3.4.3 +charset-normalizer==3.4.7 # via # -r requirements/base.txt # requests -click==8.3.0 +click==8.4.2 # via # -r requirements/base.txt # celery @@ -65,17 +65,18 @@ click-repl==0.3.0 # via # -r requirements/base.txt # celery -code-annotations==2.3.0 +code-annotations==2.3.2 # via # -r requirements/base.txt # edx-toggles -coverage==7.10.7 +coverage==7.14.3 # via -r requirements/test.in -cryptography==46.0.2 +cryptography==49.0.0 # via # -r requirements/base.txt # jwcrypto # pyjwt + # social-auth-core ddt==1.7.2 # via -r requirements/test.in defusedxml==0.7.1 @@ -83,7 +84,7 @@ defusedxml==0.7.1 # -r requirements/base.txt # python3-openid # social-auth-core -dill==0.4.0 +dill==0.4.1 # via pylint # via # -c requirements/constraints.txt @@ -106,7 +107,7 @@ dill==0.4.0 # event-tracking # jsonfield # openedx-events -django-countries==7.6.1 +django-countries==9.0.0 # via -r requirements/test.in django-crum==0.7.9 # via @@ -133,7 +134,7 @@ django-oauth-toolkit==1.7.1 # -r requirements/base.txt django-oauth2-provider==0.2.6.1 # via -r requirements/base.txt -django-simple-history==3.10.1 +django-simple-history==3.12.0 # via # -r requirements/base.txt # edx-proctoring @@ -144,11 +145,11 @@ django-waffle==5.0.0 # edx-drf-extensions # edx-proctoring # edx-toggles -django-webpack-loader==3.2.1 +django-webpack-loader==3.2.4 # via # -r requirements/base.txt # edx-proctoring -djangorestframework==3.16.1 +djangorestframework==3.17.1 # via # -r requirements/base.txt # drf-jwt @@ -164,11 +165,11 @@ drf-jwt==1.19.2 # via # -r requirements/base.txt # edx-drf-extensions -drf-yasg==1.21.11 +drf-yasg==1.21.15 # via # -r requirements/base.txt # edx-api-doc-tools -edx-api-doc-tools==2.1.0 +edx-api-doc-tools==3.0.0 # via -r requirements/base.txt edx-ccx-keys==2.0.2 # via @@ -188,7 +189,7 @@ edx-drf-extensions==10.6.0 # -r requirements/base.txt # edx-proctoring # edx-when -edx-opaque-keys[django]==3.0.0 +edx-opaque-keys[django]==4.0.0 # via # -r requirements/base.txt # edx-ccx-keys @@ -198,27 +199,27 @@ edx-opaque-keys[django]==3.0.0 # openedx-events edx-proctoring==5.2.0 # via -r requirements/base.txt -edx-rest-api-client==6.2.0 +edx-rest-api-client==7.0.0 # via # -r requirements/base.txt # edx-proctoring -edx-toggles==5.4.1 +edx-toggles==6.0.0 # via # -r requirements/base.txt # event-tracking -edx-when==3.0.0 +edx-when==4.0.0 # via # -r requirements/base.txt # edx-proctoring -event-tracking==3.3.0 +event-tracking==4.0.2 # via # -r requirements/base.txt # edx-proctoring factory-boy==3.3.3 # via -r requirements/test.in -faker==37.11.0 +faker==40.23.0 # via factory-boy -fastavro==1.12.1 +fastavro==1.12.2 # via # -r requirements/base.txt # openedx-events @@ -226,7 +227,7 @@ fs==2.4.16 # via # -r requirements/base.txt # xblock -idna==3.11 +idna==3.18 # via # -r requirements/base.txt # requests @@ -234,7 +235,7 @@ inflection==0.5.1 # via # -r requirements/base.txt # drf-yasg -iniconfig==2.1.0 +iniconfig==2.3.0 # via pytest isort==6.1.0 # via pylint @@ -246,19 +247,19 @@ jsonfield==3.2.0 # via # -r requirements/base.txt # edx-proctoring -jwcrypto==1.5.6 +jwcrypto==1.5.8 # via # -r requirements/base.txt # django-oauth-toolkit -kombu==5.5.4 +kombu==5.6.2 # via # -r requirements/base.txt # celery -lxml==6.0.2 +lxml==6.1.1 # via # -r requirements/base.txt # xblock -mako==1.3.10 +mako==1.3.12 # via # -r requirements/base.txt # xblock @@ -282,13 +283,13 @@ openedx-events==10.5.0 # via # -r requirements/base.txt # event-tracking -packaging==25.0 +packaging==26.2 # via # -r requirements/base.txt # drf-yasg # kombu # pytest -platformdirs==4.5.0 +platformdirs==4.10.0 # via pylint pluggy==1.6.0 # via pytest @@ -296,13 +297,13 @@ prompt-toolkit==3.0.52 # via # -r requirements/base.txt # click-repl -psutil==7.1.0 +psutil==7.2.2 # via # -r requirements/base.txt # edx-django-utils pycodestyle==2.14.0 # via -r requirements/test.in -pycparser==2.23 +pycparser==3.0 # via # -r requirements/base.txt # cffi @@ -310,9 +311,9 @@ pycryptodomex==3.23.0 # via # -r requirements/base.txt # edx-proctoring -pygments==2.19.2 +pygments==2.20.0 # via pytest -pyjwt[crypto]==2.10.1 +pyjwt[crypto]==2.13.0 # via # -r requirements/base.txt # drf-jwt @@ -324,20 +325,20 @@ pylint==3.3.9 # via # -c requirements/constraints.txt # -r requirements/test.in -pymongo==4.15.3 +pymongo==4.17.0 # via # -r requirements/base.txt # edx-opaque-keys # event-tracking -pynacl==1.6.0 +pynacl==1.6.2 # via # -r requirements/base.txt # edx-django-utils -pytest==8.4.2 +pytest==9.1.1 # via # -r requirements/test.in # pytest-django -pytest-django==4.11.1 +pytest-django==4.12.0 # via -r requirements/test.in python-dateutil==2.9.0.post0 # via @@ -357,7 +358,7 @@ python3-openid==3.2.0 # via # -r requirements/base.txt # social-auth-core -pytz==2025.2 +pytz==2026.2 # via # -r requirements/base.txt # drf-yasg @@ -371,7 +372,7 @@ pyyaml==6.0.3 # code-annotations # drf-yasg # xblock -requests==2.32.5 +requests==2.34.2 # via # -r requirements/base.txt # django-oauth-toolkit @@ -395,7 +396,7 @@ shortuuid==1.0.13 # via # -r requirements/base.txt # django-oauth2-provider -simplejson==3.20.2 +simplejson==4.1.1 # via # -r requirements/base.txt # xblock @@ -406,25 +407,25 @@ six==1.17.0 # event-tracking # fs # python-dateutil -social-auth-core==4.8.1 +social-auth-core==5.0.1 # via -r requirements/base.txt -sqlparse==0.5.3 +sqlparse==0.5.5 # via # -r requirements/base.txt # django -stevedore==5.5.0 +stevedore==5.8.0 # via # -r requirements/base.txt # code-annotations # edx-django-utils # edx-opaque-keys -testfixtures==9.2.0 +testfixtures==12.2.0 # via -r requirements/test.in text-unidecode==1.3 # via # -r requirements/base.txt # python-slugify -tomlkit==0.13.3 +tomlkit==0.15.0 # via pylint typing-extensions==4.15.0 # via @@ -432,16 +433,20 @@ typing-extensions==4.15.0 # django-countries # edx-opaque-keys # jwcrypto -tzdata==2025.2 + # testfixtures +tzdata==2026.2 # via # -r requirements/base.txt - # faker # kombu +tzlocal==5.4.3 + # via + # -r requirements/base.txt + # celery uritemplate==4.2.0 # via # -r requirements/base.txt # drf-yasg -urllib3==2.5.0 +urllib3==2.7.0 # via # -r requirements/base.txt # requests @@ -451,19 +456,19 @@ vine==5.1.0 # amqp # celery # kombu -wcwidth==0.2.14 +wcwidth==0.8.1 # via # -r requirements/base.txt # prompt-toolkit -web-fragments==3.1.0 +web-fragments==4.0.0 # via # -r requirements/base.txt # xblock -webob==1.8.9 +webob==1.8.10 # via # -r requirements/base.txt # xblock -xblock==5.2.0 +xblock==6.1.0 # via # -r requirements/base.txt # edx-when diff --git a/requirements/tox.txt b/requirements/tox.txt index cd4c8c979..103d8a04f 100644 --- a/requirements/tox.txt +++ b/requirements/tox.txt @@ -4,31 +4,37 @@ # # make upgrade # -cachetools==6.2.1 - # via tox -chardet==5.2.0 +cachetools==7.1.4 # via tox colorama==0.4.6 # via tox -distlib==0.4.0 +distlib==0.4.3 # via virtualenv -filelock==3.20.0 +filelock==3.29.4 # via + # python-discovery # tox # virtualenv -packaging==25.0 +packaging==26.2 # via # pyproject-api # tox -platformdirs==4.5.0 +platformdirs==4.10.0 # via + # python-discovery # tox # virtualenv pluggy==1.6.0 # via tox -pyproject-api==1.10.0 +pyproject-api==1.10.1 + # via tox +python-discovery==1.4.2 + # via + # tox + # virtualenv +tomli-w==1.2.0 # via tox -tox==4.31.0 +tox==4.56.1 # via -r requirements/tox.in -virtualenv==20.35.3 +virtualenv==21.5.1 # via tox diff --git a/setup.cfg b/setup.cfg index 51c020a69..5ba7e48ef 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 12.3.1 +current_version = 12.4.0 commit = False tag = False @@ -10,10 +10,10 @@ DJANGO_SETTINGS_MODULE = eox_core.settings.test [coverage:run] data_file = .coverage -omit = +omit = venv/* */backends/* - */edxapp_wrapper/* + */edxapp_wrapper/* */tests/* */settings/* node_modules/*