diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 40c3afd..14e9e5c 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -16,6 +16,22 @@ Unreleased * +0.5.1 - 2024-05-27 +********************************************** + +Changed +======= + +* Add backends for edx-platform imports + +0.5.0 - 2024-01-29 +********************************************** + +Changed +======= + +* Use urllib constraint as in edx-platform + 0.4.3 - 2023-11-27 ********************************************** diff --git a/imagesgallery/__init__.py b/imagesgallery/__init__.py index 7d791f0..e7ac0c0 100644 --- a/imagesgallery/__init__.py +++ b/imagesgallery/__init__.py @@ -2,6 +2,4 @@ Init for the ImagesGalleryXBlock package. """ -from .imagesgallery import ImagesGalleryXBlock - -__version__ = '0.4.3' +__version__ = "0.5.1" diff --git a/imagesgallery/apps.py b/imagesgallery/apps.py new file mode 100644 index 0000000..4ef0d43 --- /dev/null +++ b/imagesgallery/apps.py @@ -0,0 +1,28 @@ +""" +Images Gallery Django application initialization. +""" + +from django.apps import AppConfig + + +class ImagesGalleryConfig(AppConfig): + """ + Configuration for the Images Gallery Django application. + """ + + name = "imagesgallery" + + plugin_app = { + "settings_config": { + "lms.djangoapp": { + "common": {"relative_path": "settings.common"}, + "test": {"relative_path": "settings.test"}, + "production": {"relative_path": "settings.production"}, + }, + "cms.djangoapp": { + "common": {"relative_path": "settings.common"}, + "test": {"relative_path": "settings.test"}, + "production": {"relative_path": "settings.production"}, + }, + }, + } diff --git a/imagesgallery/edxapp_wrapper/__init__.py b/imagesgallery/edxapp_wrapper/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/imagesgallery/edxapp_wrapper/backends/__init__.py b/imagesgallery/edxapp_wrapper/backends/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/imagesgallery/edxapp_wrapper/backends/contentstore_r_v1.py b/imagesgallery/edxapp_wrapper/backends/contentstore_r_v1.py new file mode 100644 index 0000000..1990992 --- /dev/null +++ b/imagesgallery/edxapp_wrapper/backends/contentstore_r_v1.py @@ -0,0 +1,8 @@ +""" +Contentstore module definitions for Open edX Redwood release. +""" + +# pylint: disable=import-error, unused-import +from xmodule.contentstore.content import StaticContent +from xmodule.contentstore.django import contentstore +from cms.djangoapps.contentstore.views.assets import update_course_run_asset diff --git a/imagesgallery/edxapp_wrapper/backends/site_configuration_r_v1.py b/imagesgallery/edxapp_wrapper/backends/site_configuration_r_v1.py new file mode 100644 index 0000000..043f3da --- /dev/null +++ b/imagesgallery/edxapp_wrapper/backends/site_configuration_r_v1.py @@ -0,0 +1,6 @@ +""" +Site Configuration module definitions for Open edX Redwood release. +""" + +# pylint: disable=import-error, unused-import +from openedx.core.djangoapps.site_configuration import helpers diff --git a/imagesgallery/edxapp_wrapper/contentstore.py b/imagesgallery/edxapp_wrapper/contentstore.py new file mode 100644 index 0000000..cac17b7 --- /dev/null +++ b/imagesgallery/edxapp_wrapper/contentstore.py @@ -0,0 +1,40 @@ +""" +Contentstore module generalized definitions. +""" + +from importlib import import_module + +from django.conf import settings + + +def get_static_content(): + """ + Wrapper for `xmodule.contentstore.content.StaticContent` in edx-platform. + """ + backend_function = settings.IMAGES_GALLERY_CONTENTSTORE_BACKEND + backend = import_module(backend_function) + + return backend.StaticContent + + +def contentstore(*args, **kwargs): + """ + Wrapper method of `xmodule.contentstore.django.contentstore` in edx-platform. + """ + backend_function = settings.IMAGES_GALLERY_CONTENTSTORE_BACKEND + backend = import_module(backend_function) + + return backend.contentstore(*args, **kwargs) + + +def update_course_run_asset(*args, **kwargs): + """ + Wrapper method of `cms.djangoapps.contentstore.views.assets.update_course_run_asset` in edx-platform. + """ + backend_function = settings.IMAGES_GALLERY_CONTENTSTORE_BACKEND + backend = import_module(backend_function) + + return backend.update_course_run_asset(*args, **kwargs) + + +StaticContent = get_static_content() diff --git a/imagesgallery/edxapp_wrapper/site_configuration.py b/imagesgallery/edxapp_wrapper/site_configuration.py new file mode 100644 index 0000000..0c7a500 --- /dev/null +++ b/imagesgallery/edxapp_wrapper/site_configuration.py @@ -0,0 +1,20 @@ +""" +Site Configuration module generalized definitions. +""" + +from importlib import import_module + +from django.conf import settings + + +def get_configuration_helpers(): + """ + Wrapper for `openedx.core.djangoapps.site_configuration.helpers` function in edx-platform. + """ + backend_function = settings.IMAGES_GALLERY_SITE_CONFIGURATION_BACKEND + backend = import_module(backend_function) + + return backend.helpers + + +configuration_helpers = get_configuration_helpers() diff --git a/imagesgallery/imagesgallery.py b/imagesgallery/imagesgallery.py index 4c8df3c..126a941 100644 --- a/imagesgallery/imagesgallery.py +++ b/imagesgallery/imagesgallery.py @@ -1,4 +1,4 @@ -"""TO-DO: Write a description of what this XBlock is.""" +"""Images Gallery XBlock.""" from __future__ import annotations import logging @@ -9,23 +9,16 @@ import pkg_resources from django.conf import settings from django.utils import translation +from opaque_keys.edx.keys import AssetKey +from web_fragments.fragment import Fragment from webob.response import Response from xblock.core import XBlock from xblock.fields import List, Scope -from xblock.fragment import Fragment from xblock.reference.user_service import XBlockUser -from xblockutils.resources import ResourceLoader - -try: - from opaque_keys.edx.keys import AssetKey - from openedx.core.djangoapps.site_configuration import helpers as configuration_helpers - from xmodule.contentstore.content import StaticContent - from xmodule.contentstore.django import contentstore -except ImportError: - configuration_helpers = None - StaticContent = None - contentstore = None - AssetKey = None +from xblock.utils.resources import ResourceLoader + +from imagesgallery.edxapp_wrapper.contentstore import StaticContent, contentstore, update_course_run_asset +from imagesgallery.edxapp_wrapper.site_configuration import configuration_helpers log = logging.getLogger(__name__) @@ -226,11 +219,6 @@ def studio_view(self, context=None) -> Fragment: @XBlock.handler def file_upload(self, request, suffix=''): # pylint: disable=unused-argument """Handler for file upload to the course assets.""" - # Temporary fix for supporting both contentstore assets management versions (master / Palm) - try: - from cms.djangoapps.contentstore.views.assets import update_course_run_asset # pylint: disable=import-outside-toplevel - except ImportError: - from cms.djangoapps.contentstore.asset_storage_handler import update_course_run_asset # pylint: disable=import-outside-toplevel uploaded_content = [] for _, file in request.params.items(): try: diff --git a/imagesgallery/settings/__init__.py b/imagesgallery/settings/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/imagesgallery/settings/common.py b/imagesgallery/settings/common.py new file mode 100644 index 0000000..0b3cfda --- /dev/null +++ b/imagesgallery/settings/common.py @@ -0,0 +1,11 @@ +""" +Settings for the Images Gallery XBlock. +""" + + +def plugin_settings(settings): + """ + Read / Update necessary common project settings. + """ + settings.IMAGES_GALLERY_SITE_CONFIGURATION_BACKEND = "imagesgallery.edxapp_wrapper.backends.site_configuration_r_v1" + settings.IMAGES_GALLERY_CONTENTSTORE_BACKEND = "imagesgallery.edxapp_wrapper.backends.contentstore_r_v1" diff --git a/imagesgallery/settings/production.py b/imagesgallery/settings/production.py new file mode 100644 index 0000000..4ea0037 --- /dev/null +++ b/imagesgallery/settings/production.py @@ -0,0 +1,17 @@ +""" +Settings for the Images Gallery XBlock. +""" + + +def plugin_settings(settings): + """ + Read / Update necessary common project settings. + """ + settings.IMAGES_GALLERY_SITE_CONFIGURATION_BACKEND = getattr(settings, "ENV_TOKENS", {}).get( + "IMAGES_GALLERY_SITE_CONFIGURATION_BACKEND", + settings.IMAGES_GALLERY_SITE_CONFIGURATION_BACKEND, + ) + settings.IMAGES_GALLERY_CONTENTSTORE_BACKEND = getattr(settings, "ENV_TOKENS", {}).get( + "IMAGES_GALLERY_CONTENTSTORE_BACKEND", + settings.IMAGES_GALLERY_CONTENTSTORE_BACKEND, + ) diff --git a/imagesgallery/settings/test.py b/imagesgallery/settings/test.py new file mode 100644 index 0000000..26bc804 --- /dev/null +++ b/imagesgallery/settings/test.py @@ -0,0 +1,49 @@ +""" +Django settings for imagesgallery project. +For more information on this file, see +https://docs.djangoproject.com/en/3.2/topics/settings/ +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.2/ref/settings/ +""" + +import os + +SECRET_KEY = os.getenv("DJANGO_SECRET", "open_secret") + +# Application definition + +INSTALLED_APPS = ( + "statici18n", + "imagesgallery", +) + +# Internationalization +# https://docs.djangoproject.com/en/3.2/topics/i18n/ + +LANGUAGE_CODE = "en-us" + +TIME_ZONE = "UTC" + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.2/howto/static-files/ + +STATIC_URL = "/static/" + +# statici18n +# https://django-statici18n.readthedocs.io/en/latest/settings.html + +STATICI18N_DOMAIN = "text" +STATICI18N_PACKAGES = ("imagesgallery.translations",) +STATICI18N_ROOT = "imagesgallery/public/js" +STATICI18N_OUTPUT_DIR = "translations" + +# XBlock settings +IMAGES_GALLERY_SITE_CONFIGURATION_BACKEND = "imagesgallery.edxapp_wrapper.backends.site_configuration_r_v1" +IMAGES_GALLERY_CONTENTSTORE_BACKEND = "imagesgallery.edxapp_wrapper.backends.contentstore_r_v1" diff --git a/manage.py b/manage.py index 7fcc358..2e74607 100755 --- a/manage.py +++ b/manage.py @@ -5,15 +5,13 @@ It eases running django related commands with the correct settings already imported. """ + import os import sys from django.core.management import execute_from_command_line if __name__ == "__main__": - os.environ.setdefault( - "DJANGO_SETTINGS_MODULE", - "imagesgallery.locale.settings" - ) + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "imagesgallery.settings.test") execute_from_command_line(sys.argv) diff --git a/requirements/base.in b/requirements/base.in index 1dae69f..eae125e 100644 --- a/requirements/base.in +++ b/requirements/base.in @@ -6,3 +6,4 @@ edx-i18n-tools Mako XBlock xblock-utils +edx-opaque-keys diff --git a/requirements/base.txt b/requirements/base.txt index 8a4e099..18ad546 100644 --- a/requirements/base.txt +++ b/requirements/base.txt @@ -6,15 +6,17 @@ # appdirs==1.4.4 # via fs -asgiref==3.7.2 +asgiref==3.8.1 # via django -boto3==1.34.29 +backports-zoneinfo==0.2.1 + # via django +boto3==1.34.109 # via fs-s3fs -botocore==1.34.29 +botocore==1.34.109 # via # boto3 # s3transfer -django==3.2.23 +django==4.2.13 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # django-appconf @@ -23,9 +25,13 @@ django==3.2.23 # openedx-django-pyfs django-appconf==1.0.6 # via django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.5.0 + # via -r requirements/base.in +dnspython==2.6.1 + # via pymongo +edx-i18n-tools==1.6.0 # via -r requirements/base.in -edx-i18n-tools==1.3.0 +edx-opaque-keys==2.9.0 # via -r requirements/base.in fs==2.4.16 # via @@ -40,38 +46,43 @@ jmespath==1.0.1 # botocore lazy==1.6 # via xblock -lxml==5.1.0 +lxml[html-clean,html_clean]==5.2.2 # via # edx-i18n-tools + # lxml-html-clean # xblock -mako==1.3.0 +lxml-html-clean==0.1.1 + # via lxml +mako==1.3.5 # via # -r requirements/base.in # xblock # xblock-utils -markupsafe==2.1.4 +markupsafe==2.1.5 # via # mako # xblock -openedx-django-pyfs==3.4.1 +openedx-django-pyfs==3.6.0 # via xblock -path==16.9.0 +path==16.14.0 # via edx-i18n-tools +pbr==6.0.0 + # via stevedore polib==1.2.0 # via edx-i18n-tools -python-dateutil==2.8.2 +pymongo==4.4.0 + # via edx-opaque-keys +python-dateutil==2.9.0.post0 # via # botocore # xblock -pytz==2023.4 - # via - # django - # xblock +pytz==2024.1 + # via xblock pyyaml==6.0.1 # via # edx-i18n-tools # xblock -s3transfer==0.10.0 +s3transfer==0.10.1 # via boto3 simplejson==3.19.2 # via @@ -82,21 +93,25 @@ six==1.16.0 # fs # fs-s3fs # python-dateutil -sqlparse==0.4.4 +sqlparse==0.5.0 # via django -typing-extensions==4.9.0 - # via asgiref +stevedore==5.2.0 + # via edx-opaque-keys +typing-extensions==4.11.0 + # via + # asgiref + # edx-opaque-keys urllib3==1.26.18 # via # -c requirements/constraints.txt # botocore -web-fragments==2.1.0 +web-fragments==2.2.0 # via # xblock # xblock-utils webob==1.8.7 # via xblock -xblock[django]==1.10.0 +xblock[django]==4.0.1 # via # -r requirements/base.in # xblock-utils diff --git a/requirements/ci.txt b/requirements/ci.txt index 37afd9a..53b207d 100644 --- a/requirements/ci.txt +++ b/requirements/ci.txt @@ -4,69 +4,78 @@ # # make upgrade # -certifi==2023.11.17 +backports-tarfile==1.1.1 + # via jaraco-context +certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography charset-normalizer==3.3.2 # via requests -cryptography==42.0.1 +cryptography==42.0.7 # via secretstorage distlib==0.3.8 # via virtualenv docutils==0.20.1 # via readme-renderer -filelock==3.13.1 +filelock==3.14.0 # via # tox # virtualenv -idna==3.6 +idna==3.7 # via requests -importlib-metadata==7.0.1 +importlib-metadata==6.11.0 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # keyring # twine -importlib-resources==6.1.1 +importlib-resources==6.4.0 # via keyring -jaraco-classes==3.3.0 +jaraco-classes==3.4.0 + # via keyring +jaraco-context==5.3.0 + # via keyring +jaraco-functools==4.0.1 # via keyring jeepney==0.8.0 # via # keyring # secretstorage -keyring==24.3.0 +keyring==25.2.1 # via twine markdown-it-py==3.0.0 # via rich mdurl==0.1.2 # via markdown-it-py more-itertools==10.2.0 - # via jaraco-classes -nh3==0.2.15 + # via + # jaraco-classes + # jaraco-functools +nh3==0.2.17 # via readme-renderer -packaging==23.2 +packaging==24.0 # via # pyproject-api # tox -pkginfo==1.9.6 +pkginfo==1.10.0 # via twine -platformdirs==4.1.0 +platformdirs==4.2.2 # via # tox # virtualenv -pluggy==1.4.0 +pluggy==1.5.0 # via tox py==1.11.0 # via tox -pycparser==2.21 +pycparser==2.22 # via cffi -pygments==2.17.2 +pygments==2.18.0 # via # readme-renderer # rich -readme-renderer==42.0 +readme-renderer==43.0 # via twine -requests==2.31.0 +requests==2.32.1 # via # requests-toolbelt # twine @@ -74,7 +83,7 @@ requests-toolbelt==1.0.0 # via twine rfc3986==2.0.0 # via twine -rich==13.7.0 +rich==13.7.1 # via twine secretstorage==3.3.3 # via keyring @@ -90,18 +99,18 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.in -twine==4.0.2 +twine==5.1.0 # via -r requirements/ci.in -typing-extensions==4.9.0 +typing-extensions==4.11.0 # via rich urllib3==1.26.18 # via # -c requirements/constraints.txt # requests # twine -virtualenv==20.25.0 +virtualenv==20.26.2 # via tox -zipp==3.17.0 +zipp==3.18.2 # via # importlib-metadata # importlib-resources diff --git a/requirements/dev.txt b/requirements/dev.txt index a61b15f..853e907 100644 --- a/requirements/dev.txt +++ b/requirements/dev.txt @@ -8,29 +8,37 @@ appdirs==1.4.4 # via # -r requirements/quality.txt # fs -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/quality.txt # django -astroid==3.0.2 +astroid==3.2.2 # via # -r requirements/quality.txt # pylint # pylint-celery -boto3==1.34.29 +backports-tarfile==1.1.1 + # via + # -r requirements/ci.txt + # jaraco-context +backports-zoneinfo==0.2.1 + # via + # -r requirements/quality.txt + # django +boto3==1.34.109 # via # -r requirements/quality.txt # fs-s3fs -botocore==1.34.29 +botocore==1.34.109 # via # -r requirements/quality.txt # boto3 # s3transfer -build==1.0.3 +build==1.2.1 # via # -r requirements/pip-tools.txt # pip-tools -certifi==2023.11.17 +certifi==2024.2.2 # via # -r requirements/ci.txt # requests @@ -56,20 +64,19 @@ click-log==0.4.0 # via # -r requirements/quality.txt # edx-lint -code-annotations==1.5.0 +code-annotations==1.8.0 # via # -r requirements/quality.txt # edx-lint -coverage[toml]==7.4.1 +coverage[toml]==7.5.1 # via # -r requirements/quality.txt - # coverage # pytest-cov -cryptography==42.0.1 +cryptography==42.0.7 # via # -r requirements/ci.txt # secretstorage -diff-cover==8.0.3 +diff-cover==9.0.0 # via -r requirements/dev.in dill==0.3.8 # via @@ -79,7 +86,7 @@ distlib==0.3.8 # via # -r requirements/ci.txt # virtualenv -django==3.2.23 +django==4.2.13 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/quality.txt @@ -91,23 +98,29 @@ django-appconf==1.0.6 # via # -r requirements/quality.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.5.0 # via -r requirements/quality.txt +dnspython==2.6.1 + # via + # -r requirements/quality.txt + # pymongo docutils==0.20.1 # via # -r requirements/ci.txt # readme-renderer -edx-i18n-tools==1.3.0 +edx-i18n-tools==1.6.0 # via # -r requirements/dev.in # -r requirements/quality.txt edx-lint==5.3.6 # via -r requirements/quality.txt -exceptiongroup==1.2.0 +edx-opaque-keys==2.9.0 + # via -r requirements/quality.txt +exceptiongroup==1.2.1 # via # -r requirements/quality.txt # pytest -filelock==3.13.1 +filelock==3.14.0 # via # -r requirements/ci.txt # tox @@ -122,18 +135,19 @@ fs-s3fs==1.1.1 # via # -r requirements/quality.txt # openedx-django-pyfs -idna==3.6 +idna==3.7 # via # -r requirements/ci.txt # requests -importlib-metadata==7.0.1 +importlib-metadata==6.11.0 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/ci.txt # -r requirements/pip-tools.txt # build # keyring # twine -importlib-resources==6.1.1 +importlib-resources==6.4.0 # via # -r requirements/ci.txt # keyring @@ -145,7 +159,15 @@ isort==5.13.2 # via # -r requirements/quality.txt # pylint -jaraco-classes==3.3.0 +jaraco-classes==3.4.0 + # via + # -r requirements/ci.txt + # keyring +jaraco-context==5.3.0 + # via + # -r requirements/ci.txt + # keyring +jaraco-functools==4.0.1 # via # -r requirements/ci.txt # keyring @@ -154,7 +176,7 @@ jeepney==0.8.0 # -r requirements/ci.txt # keyring # secretstorage -jinja2==3.1.3 +jinja2==3.1.4 # via # -r requirements/quality.txt # code-annotations @@ -164,7 +186,7 @@ jmespath==1.0.1 # -r requirements/quality.txt # boto3 # botocore -keyring==24.3.0 +keyring==25.2.1 # via # -r requirements/ci.txt # twine @@ -172,12 +194,15 @@ lazy==1.6 # via # -r requirements/quality.txt # xblock -lxml==5.1.0 +lxml[html-clean]==5.2.2 # via # -r requirements/quality.txt # edx-i18n-tools + # lxml-html-clean # xblock -mako==1.3.0 +lxml-html-clean==0.1.1 + # via -r requirements/quality.txt +mako==1.3.5 # via # -r requirements/quality.txt # xblock @@ -186,7 +211,7 @@ markdown-it-py==3.0.0 # via # -r requirements/ci.txt # rich -markupsafe==2.1.4 +markupsafe==2.1.5 # via # -r requirements/quality.txt # jinja2 @@ -204,15 +229,16 @@ more-itertools==10.2.0 # via # -r requirements/ci.txt # jaraco-classes -nh3==0.2.15 + # jaraco-functools +nh3==0.2.17 # via # -r requirements/ci.txt # readme-renderer -openedx-django-pyfs==3.4.1 +openedx-django-pyfs==3.6.0 # via # -r requirements/quality.txt # xblock -packaging==23.2 +packaging==24.0 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt @@ -220,7 +246,7 @@ packaging==23.2 # build # pytest # tox -path==16.9.0 +path==16.14.0 # via # -r requirements/quality.txt # edx-i18n-tools @@ -228,19 +254,19 @@ pbr==6.0.0 # via # -r requirements/quality.txt # stevedore -pip-tools==7.3.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.txt -pkginfo==1.9.6 +pkginfo==1.10.0 # via # -r requirements/ci.txt # twine -platformdirs==4.1.0 +platformdirs==4.2.2 # via # -r requirements/ci.txt # -r requirements/quality.txt # pylint # virtualenv -pluggy==1.4.0 +pluggy==1.5.0 # via # -r requirements/ci.txt # -r requirements/quality.txt @@ -257,19 +283,19 @@ py==1.11.0 # tox pycodestyle==2.11.1 # via -r requirements/quality.txt -pycparser==2.21 +pycparser==2.22 # via # -r requirements/ci.txt # cffi pydocstyle==6.3.0 # via -r requirements/quality.txt -pygments==2.17.2 +pygments==2.18.0 # via # -r requirements/ci.txt # diff-cover # readme-renderer # rich -pylint==3.0.3 +pylint==3.2.2 # via # -r requirements/quality.txt # edx-lint @@ -289,32 +315,36 @@ pylint-plugin-utils==0.8.2 # -r requirements/quality.txt # pylint-celery # pylint-django -pyproject-hooks==1.0.0 +pymongo==4.4.0 + # via + # -r requirements/quality.txt + # edx-opaque-keys +pyproject-hooks==1.1.0 # via # -r requirements/pip-tools.txt # build -pytest==8.0.0 + # pip-tools +pytest==8.2.1 # via # -r requirements/quality.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/quality.txt -pytest-django==4.7.0 +pytest-django==4.8.0 # via -r requirements/quality.txt -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/quality.txt # botocore # xblock -python-slugify==8.0.2 +python-slugify==8.0.4 # via # -r requirements/quality.txt # code-annotations -pytz==2023.4 +pytz==2024.1 # via # -r requirements/quality.txt - # django # xblock pyyaml==6.0.1 # via @@ -322,11 +352,11 @@ pyyaml==6.0.1 # code-annotations # edx-i18n-tools # xblock -readme-renderer==42.0 +readme-renderer==43.0 # via # -r requirements/ci.txt # twine -requests==2.31.0 +requests==2.32.1 # via # -r requirements/ci.txt # requests-toolbelt @@ -339,11 +369,11 @@ rfc3986==2.0.0 # via # -r requirements/ci.txt # twine -rich==13.7.0 +rich==13.7.1 # via # -r requirements/ci.txt # twine -s3transfer==0.10.0 +s3transfer==0.10.1 # via # -r requirements/quality.txt # boto3 @@ -369,14 +399,15 @@ snowballstemmer==2.2.0 # via # -r requirements/quality.txt # pydocstyle -sqlparse==0.4.4 +sqlparse==0.5.0 # via # -r requirements/quality.txt # django -stevedore==5.1.0 +stevedore==5.2.0 # via # -r requirements/quality.txt # code-annotations + # edx-opaque-keys text-unidecode==1.3 # via # -r requirements/quality.txt @@ -390,10 +421,9 @@ tomli==2.0.1 # coverage # pip-tools # pylint - # pyproject-hooks # pytest # tox -tomlkit==0.12.3 +tomlkit==0.12.5 # via # -r requirements/quality.txt # pylint @@ -403,14 +433,15 @@ tox==3.28.0 # tox-battery tox-battery==0.6.2 # via -r requirements/ci.txt -twine==4.0.2 +twine==5.1.0 # via -r requirements/ci.txt -typing-extensions==4.9.0 +typing-extensions==4.11.0 # via # -r requirements/ci.txt # -r requirements/quality.txt # asgiref # astroid + # edx-opaque-keys # pylint # rich urllib3==1.26.18 @@ -421,11 +452,11 @@ urllib3==1.26.18 # botocore # requests # twine -virtualenv==20.25.0 +virtualenv==20.26.2 # via # -r requirements/ci.txt # tox -web-fragments==2.1.0 +web-fragments==2.2.0 # via # -r requirements/quality.txt # xblock @@ -434,18 +465,17 @@ webob==1.8.7 # via # -r requirements/quality.txt # xblock -wheel==0.42.0 +wheel==0.43.0 # via # -r requirements/pip-tools.txt # pip-tools -xblock[django]==1.10.0 +xblock[django]==4.0.1 # via # -r requirements/quality.txt - # xblock # xblock-utils xblock-utils==4.0.0 # via -r requirements/quality.txt -zipp==3.17.0 +zipp==3.18.2 # via # -r requirements/ci.txt # -r requirements/pip-tools.txt diff --git a/requirements/doc.txt b/requirements/doc.txt index 8571a82..d690096 100644 --- a/requirements/doc.txt +++ b/requirements/doc.txt @@ -12,28 +12,34 @@ appdirs==1.4.4 # via # -r requirements/test.txt # fs -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/test.txt # django -babel==2.14.0 +babel==2.15.0 # via # pydata-sphinx-theme # sphinx +backports-tarfile==1.1.1 + # via jaraco-context +backports-zoneinfo==0.2.1 + # via + # -r requirements/test.txt + # django beautifulsoup4==4.12.3 # via pydata-sphinx-theme -boto3==1.34.29 +boto3==1.34.109 # via # -r requirements/test.txt # fs-s3fs -botocore==1.34.29 +botocore==1.34.109 # via # -r requirements/test.txt # boto3 # s3transfer -build==1.0.3 +build==1.2.1 # via -r requirements/doc.in -certifi==2023.11.17 +certifi==2024.2.2 # via requests cffi==1.16.0 # via cryptography @@ -43,16 +49,15 @@ click==8.1.7 # via # -r requirements/test.txt # code-annotations -code-annotations==1.5.0 +code-annotations==1.8.0 # via -r requirements/test.txt -coverage[toml]==7.4.1 +coverage[toml]==7.5.1 # via # -r requirements/test.txt - # coverage # pytest-cov -cryptography==42.0.1 +cryptography==42.0.7 # via secretstorage -django==3.2.23 +django==4.2.13 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -64,8 +69,12 @@ django-appconf==1.0.6 # via # -r requirements/test.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.5.0 # via -r requirements/test.txt +dnspython==2.6.1 + # via + # -r requirements/test.txt + # pymongo doc8==1.1.1 # via -r requirements/doc.in docutils==0.19 @@ -75,9 +84,11 @@ docutils==0.19 # readme-renderer # restructuredtext-lint # sphinx -edx-i18n-tools==1.3.0 +edx-i18n-tools==1.6.0 # via -r requirements/test.txt -exceptiongroup==1.2.0 +edx-opaque-keys==2.9.0 + # via -r requirements/test.txt +exceptiongroup==1.2.1 # via # -r requirements/test.txt # pytest @@ -91,29 +102,34 @@ fs-s3fs==1.1.1 # via # -r requirements/test.txt # openedx-django-pyfs -idna==3.6 +idna==3.7 # via requests imagesize==1.4.1 # via sphinx -importlib-metadata==7.0.1 +importlib-metadata==6.11.0 # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # build # keyring # sphinx # twine -importlib-resources==6.1.1 +importlib-resources==6.4.0 # via keyring iniconfig==2.0.0 # via # -r requirements/test.txt # pytest -jaraco-classes==3.3.0 +jaraco-classes==3.4.0 + # via keyring +jaraco-context==5.3.0 + # via keyring +jaraco-functools==4.0.1 # via keyring jeepney==0.8.0 # via # keyring # secretstorage -jinja2==3.1.3 +jinja2==3.1.4 # via # -r requirements/test.txt # code-annotations @@ -123,25 +139,28 @@ jmespath==1.0.1 # -r requirements/test.txt # boto3 # botocore -keyring==24.3.0 +keyring==25.2.1 # via twine lazy==1.6 # via # -r requirements/test.txt # xblock -lxml==5.1.0 +lxml[html-clean]==5.2.2 # via # -r requirements/test.txt # edx-i18n-tools + # lxml-html-clean # xblock -mako==1.3.0 +lxml-html-clean==0.1.1 + # via -r requirements/test.txt +mako==1.3.5 # via # -r requirements/test.txt # xblock # xblock-utils markdown-it-py==3.0.0 # via rich -markupsafe==2.1.4 +markupsafe==2.1.5 # via # -r requirements/test.txt # jinja2 @@ -150,21 +169,23 @@ markupsafe==2.1.4 mdurl==0.1.2 # via markdown-it-py more-itertools==10.2.0 - # via jaraco-classes -nh3==0.2.15 + # via + # jaraco-classes + # jaraco-functools +nh3==0.2.17 # via readme-renderer -openedx-django-pyfs==3.4.1 +openedx-django-pyfs==3.6.0 # via # -r requirements/test.txt # xblock -packaging==23.2 +packaging==24.0 # via # -r requirements/test.txt # build # pydata-sphinx-theme # pytest # sphinx -path==16.9.0 +path==16.14.0 # via # -r requirements/test.txt # edx-i18n-tools @@ -172,9 +193,9 @@ pbr==6.0.0 # via # -r requirements/test.txt # stevedore -pkginfo==1.9.6 +pkginfo==1.10.0 # via twine -pluggy==1.4.0 +pluggy==1.5.0 # via # -r requirements/test.txt # pytest @@ -182,11 +203,11 @@ polib==1.2.0 # via # -r requirements/test.txt # edx-i18n-tools -pycparser==2.21 +pycparser==2.22 # via cffi pydata-sphinx-theme==0.14.4 # via sphinx-book-theme -pygments==2.17.2 +pygments==2.18.0 # via # accessible-pygments # doc8 @@ -194,31 +215,34 @@ pygments==2.17.2 # readme-renderer # rich # sphinx -pyproject-hooks==1.0.0 +pymongo==4.4.0 + # via + # -r requirements/test.txt + # edx-opaque-keys +pyproject-hooks==1.1.0 # via build -pytest==8.0.0 +pytest==8.2.1 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.txt -pytest-django==4.7.0 +pytest-django==4.8.0 # via -r requirements/test.txt -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/test.txt # botocore # xblock -python-slugify==8.0.2 +python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations -pytz==2023.4 +pytz==2024.1 # via # -r requirements/test.txt # babel - # django # xblock pyyaml==6.0.1 # via @@ -226,9 +250,9 @@ pyyaml==6.0.1 # code-annotations # edx-i18n-tools # xblock -readme-renderer==42.0 +readme-renderer==43.0 # via twine -requests==2.31.0 +requests==2.32.1 # via # requests-toolbelt # sphinx @@ -239,9 +263,9 @@ restructuredtext-lint==1.4.0 # via doc8 rfc3986==2.0.0 # via twine -rich==13.7.0 +rich==13.7.1 # via twine -s3transfer==0.10.0 +s3transfer==0.10.1 # via # -r requirements/test.txt # boto3 @@ -281,15 +305,16 @@ sphinxcontrib-qthelp==1.0.3 # via sphinx sphinxcontrib-serializinghtml==1.1.5 # via sphinx -sqlparse==0.4.4 +sqlparse==0.5.0 # via # -r requirements/test.txt # django -stevedore==5.1.0 +stevedore==5.2.0 # via # -r requirements/test.txt # code-annotations # doc8 + # edx-opaque-keys text-unidecode==1.3 # via # -r requirements/test.txt @@ -300,14 +325,14 @@ tomli==2.0.1 # build # coverage # doc8 - # pyproject-hooks # pytest -twine==4.0.2 +twine==5.1.0 # via -r requirements/doc.in -typing-extensions==4.9.0 +typing-extensions==4.11.0 # via # -r requirements/test.txt # asgiref + # edx-opaque-keys # pydata-sphinx-theme # rich urllib3==1.26.18 @@ -317,7 +342,7 @@ urllib3==1.26.18 # botocore # requests # twine -web-fragments==2.1.0 +web-fragments==2.2.0 # via # -r requirements/test.txt # xblock @@ -326,14 +351,13 @@ webob==1.8.7 # via # -r requirements/test.txt # xblock -xblock[django]==1.10.0 +xblock[django]==4.0.1 # via # -r requirements/test.txt - # xblock # xblock-utils xblock-utils==4.0.0 # via -r requirements/test.txt -zipp==3.17.0 +zipp==3.18.2 # via # importlib-metadata # importlib-resources diff --git a/requirements/pip-tools.txt b/requirements/pip-tools.txt index 0e88226..dbb1ac7 100644 --- a/requirements/pip-tools.txt +++ b/requirements/pip-tools.txt @@ -4,26 +4,29 @@ # # make upgrade # -build==1.0.3 +build==1.2.1 # via pip-tools click==8.1.7 # via pip-tools -importlib-metadata==7.0.1 - # via build -packaging==23.2 +importlib-metadata==6.11.0 + # via + # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt + # build +packaging==24.0 # via build -pip-tools==7.3.0 +pip-tools==7.4.1 # via -r requirements/pip-tools.in -pyproject-hooks==1.0.0 - # via build +pyproject-hooks==1.1.0 + # via + # build + # pip-tools tomli==2.0.1 # via # build # pip-tools - # pyproject-hooks -wheel==0.42.0 +wheel==0.43.0 # via pip-tools -zipp==3.17.0 +zipp==3.18.2 # via importlib-metadata # The following packages are considered to be unsafe in a requirements file: diff --git a/requirements/pip.txt b/requirements/pip.txt index a4cf530..8a72bb0 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -4,11 +4,11 @@ # # make upgrade # -wheel==0.42.0 +wheel==0.43.0 # via -r requirements/pip.in # The following packages are considered to be unsafe in a requirements file: -pip==23.3.2 +pip==24.0 # via -r requirements/pip.in -setuptools==69.0.3 +setuptools==70.0.0 # via -r requirements/pip.in diff --git a/requirements/quality.txt b/requirements/quality.txt index 3338aa9..dd2546a 100644 --- a/requirements/quality.txt +++ b/requirements/quality.txt @@ -8,19 +8,23 @@ appdirs==1.4.4 # via # -r requirements/test.txt # fs -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/test.txt # django -astroid==3.0.2 +astroid==3.2.2 # via # pylint # pylint-celery -boto3==1.34.29 +backports-zoneinfo==0.2.1 + # via + # -r requirements/test.txt + # django +boto3==1.34.109 # via # -r requirements/test.txt # fs-s3fs -botocore==1.34.29 +botocore==1.34.109 # via # -r requirements/test.txt # boto3 @@ -33,18 +37,17 @@ click==8.1.7 # edx-lint click-log==0.4.0 # via edx-lint -code-annotations==1.5.0 +code-annotations==1.8.0 # via # -r requirements/test.txt # edx-lint -coverage[toml]==7.4.1 +coverage[toml]==7.5.1 # via # -r requirements/test.txt - # coverage # pytest-cov dill==0.3.8 # via pylint -django==3.2.23 +django==4.2.13 # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/test.txt @@ -56,13 +59,19 @@ django-appconf==1.0.6 # via # -r requirements/test.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.5.0 # via -r requirements/test.txt -edx-i18n-tools==1.3.0 +dnspython==2.6.1 + # via + # -r requirements/test.txt + # pymongo +edx-i18n-tools==1.6.0 # via -r requirements/test.txt edx-lint==5.3.6 # via -r requirements/quality.in -exceptiongroup==1.2.0 +edx-opaque-keys==2.9.0 + # via -r requirements/test.txt +exceptiongroup==1.2.1 # via # -r requirements/test.txt # pytest @@ -84,7 +93,7 @@ isort==5.13.2 # via # -r requirements/quality.in # pylint -jinja2==3.1.3 +jinja2==3.1.4 # via # -r requirements/test.txt # code-annotations @@ -97,17 +106,20 @@ lazy==1.6 # via # -r requirements/test.txt # xblock -lxml==5.1.0 +lxml[html-clean]==5.2.2 # via # -r requirements/test.txt # edx-i18n-tools + # lxml-html-clean # xblock -mako==1.3.0 +lxml-html-clean==0.1.1 + # via -r requirements/test.txt +mako==1.3.5 # via # -r requirements/test.txt # xblock # xblock-utils -markupsafe==2.1.4 +markupsafe==2.1.5 # via # -r requirements/test.txt # jinja2 @@ -115,15 +127,15 @@ markupsafe==2.1.4 # xblock mccabe==0.7.0 # via pylint -openedx-django-pyfs==3.4.1 +openedx-django-pyfs==3.6.0 # via # -r requirements/test.txt # xblock -packaging==23.2 +packaging==24.0 # via # -r requirements/test.txt # pytest -path==16.9.0 +path==16.14.0 # via # -r requirements/test.txt # edx-i18n-tools @@ -131,9 +143,9 @@ pbr==6.0.0 # via # -r requirements/test.txt # stevedore -platformdirs==4.1.0 +platformdirs==4.2.2 # via pylint -pluggy==1.4.0 +pluggy==1.5.0 # via # -r requirements/test.txt # pytest @@ -145,7 +157,7 @@ pycodestyle==2.11.1 # via -r requirements/quality.in pydocstyle==6.3.0 # via -r requirements/quality.in -pylint==3.0.3 +pylint==3.2.2 # via # edx-lint # pylint-celery @@ -159,28 +171,31 @@ pylint-plugin-utils==0.8.2 # via # pylint-celery # pylint-django -pytest==8.0.0 +pymongo==4.4.0 + # via + # -r requirements/test.txt + # edx-opaque-keys +pytest==8.2.1 # via # -r requirements/test.txt # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.txt -pytest-django==4.7.0 +pytest-django==4.8.0 # via -r requirements/test.txt -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/test.txt # botocore # xblock -python-slugify==8.0.2 +python-slugify==8.0.4 # via # -r requirements/test.txt # code-annotations -pytz==2023.4 +pytz==2024.1 # via # -r requirements/test.txt - # django # xblock pyyaml==6.0.1 # via @@ -188,7 +203,7 @@ pyyaml==6.0.1 # code-annotations # edx-i18n-tools # xblock -s3transfer==0.10.0 +s3transfer==0.10.1 # via # -r requirements/test.txt # boto3 @@ -206,14 +221,15 @@ six==1.16.0 # python-dateutil snowballstemmer==2.2.0 # via pydocstyle -sqlparse==0.4.4 +sqlparse==0.5.0 # via # -r requirements/test.txt # django -stevedore==5.1.0 +stevedore==5.2.0 # via # -r requirements/test.txt # code-annotations + # edx-opaque-keys text-unidecode==1.3 # via # -r requirements/test.txt @@ -224,20 +240,21 @@ tomli==2.0.1 # coverage # pylint # pytest -tomlkit==0.12.3 +tomlkit==0.12.5 # via pylint -typing-extensions==4.9.0 +typing-extensions==4.11.0 # via # -r requirements/test.txt # asgiref # astroid + # edx-opaque-keys # pylint urllib3==1.26.18 # via # -c requirements/constraints.txt # -r requirements/test.txt # botocore -web-fragments==2.1.0 +web-fragments==2.2.0 # via # -r requirements/test.txt # xblock @@ -246,10 +263,9 @@ webob==1.8.7 # via # -r requirements/test.txt # xblock -xblock[django]==1.10.0 +xblock[django]==4.0.1 # via # -r requirements/test.txt - # xblock # xblock-utils xblock-utils==4.0.0 # via -r requirements/test.txt diff --git a/requirements/test.txt b/requirements/test.txt index d05939b..7eecd90 100644 --- a/requirements/test.txt +++ b/requirements/test.txt @@ -8,27 +8,29 @@ appdirs==1.4.4 # via # -r requirements/base.txt # fs -asgiref==3.7.2 +asgiref==3.8.1 # via # -r requirements/base.txt # django -boto3==1.34.29 +backports-zoneinfo==0.2.1 + # via + # -r requirements/base.txt + # django +boto3==1.34.109 # via # -r requirements/base.txt # fs-s3fs -botocore==1.34.29 +botocore==1.34.109 # via # -r requirements/base.txt # boto3 # s3transfer click==8.1.7 # via code-annotations -code-annotations==1.5.0 +code-annotations==1.8.0 # via -r requirements/test.in -coverage[toml]==7.4.1 - # via - # coverage - # pytest-cov +coverage[toml]==7.5.1 + # via pytest-cov # via # -c https://raw.githubusercontent.com/edx/edx-lint/master/edx_lint/files/common_constraints.txt # -r requirements/base.txt @@ -40,11 +42,17 @@ django-appconf==1.0.6 # via # -r requirements/base.txt # django-statici18n -django-statici18n==2.4.0 +django-statici18n==2.5.0 # via -r requirements/base.txt -edx-i18n-tools==1.3.0 +dnspython==2.6.1 + # via + # -r requirements/base.txt + # pymongo +edx-i18n-tools==1.6.0 + # via -r requirements/base.txt +edx-opaque-keys==2.9.0 # via -r requirements/base.txt -exceptiongroup==1.2.0 +exceptiongroup==1.2.1 # via pytest fs==2.4.16 # via @@ -58,7 +66,7 @@ fs-s3fs==1.1.1 # openedx-django-pyfs iniconfig==2.0.0 # via pytest -jinja2==3.1.3 +jinja2==3.1.4 # via code-annotations jmespath==1.0.1 # via @@ -69,59 +77,69 @@ lazy==1.6 # via # -r requirements/base.txt # xblock -lxml==5.1.0 +lxml[html-clean]==5.2.2 # via # -r requirements/base.txt # edx-i18n-tools + # lxml-html-clean # xblock -mako==1.3.0 +lxml-html-clean==0.1.1 + # via + # -r requirements/base.txt + # lxml +mako==1.3.5 # via # -r requirements/base.txt # xblock # xblock-utils -markupsafe==2.1.4 +markupsafe==2.1.5 # via # -r requirements/base.txt # jinja2 # mako # xblock -openedx-django-pyfs==3.4.1 +openedx-django-pyfs==3.6.0 # via # -r requirements/base.txt # xblock -packaging==23.2 +packaging==24.0 # via pytest -path==16.9.0 +path==16.14.0 # via # -r requirements/base.txt # edx-i18n-tools pbr==6.0.0 - # via stevedore -pluggy==1.4.0 + # via + # -r requirements/base.txt + # stevedore +pluggy==1.5.0 # via pytest polib==1.2.0 # via # -r requirements/base.txt # edx-i18n-tools -pytest==8.0.0 +pymongo==4.4.0 + # via + # -r requirements/base.txt + # edx-opaque-keys +pytest==8.2.1 # via # pytest-cov # pytest-django -pytest-cov==4.1.0 +pytest-cov==5.0.0 # via -r requirements/test.in -pytest-django==4.7.0 +pytest-django==4.8.0 # via -r requirements/test.in -python-dateutil==2.8.2 +python-dateutil==2.9.0.post0 # via # -r requirements/base.txt # botocore # xblock -python-slugify==8.0.2 +python-slugify==8.0.4 # via code-annotations -pytz==2023.4 +pytz==2024.1 # via # -r requirements/base.txt - # django # xblock pyyaml==6.0.1 # via @@ -129,7 +147,7 @@ pyyaml==6.0.1 # code-annotations # edx-i18n-tools # xblock -s3transfer==0.10.0 +s3transfer==0.10.1 # via # -r requirements/base.txt # boto3 @@ -144,28 +162,32 @@ six==1.16.0 # fs # fs-s3fs # python-dateutil -sqlparse==0.4.4 +sqlparse==0.5.0 # via # -r requirements/base.txt # django -stevedore==5.1.0 - # via code-annotations +stevedore==5.2.0 + # via + # -r requirements/base.txt + # code-annotations + # edx-opaque-keys text-unidecode==1.3 # via python-slugify tomli==2.0.1 # via # coverage # pytest -typing-extensions==4.9.0 +typing-extensions==4.11.0 # via # -r requirements/base.txt # asgiref + # edx-opaque-keys urllib3==1.26.18 # via # -c requirements/constraints.txt # -r requirements/base.txt # botocore -web-fragments==2.1.0 +web-fragments==2.2.0 # via # -r requirements/base.txt # xblock @@ -174,10 +196,9 @@ webob==1.8.7 # via # -r requirements/base.txt # xblock -xblock[django]==1.10.0 +xblock[django]==4.0.1 # via # -r requirements/base.txt - # xblock # xblock-utils xblock-utils==4.0.0 # via -r requirements/base.txt diff --git a/setup.py b/setup.py index f46a85f..595c59b 100755 --- a/setup.py +++ b/setup.py @@ -173,8 +173,14 @@ def package_data(pkg, roots): 'Programming Language :: Python :: 3.8', ], entry_points={ + "lms.djangoapp": [ + "imagesgallery = imagesgallery.apps:ImagesGalleryConfig", + ], + "cms.djangoapp": [ + "imagesgallery = imagesgallery.apps:ImagesGalleryConfig", + ], 'xblock.v1': [ - 'imagesgallery = imagesgallery:ImagesGalleryXBlock', + 'imagesgallery = imagesgallery.imagesgallery:ImagesGalleryXBlock', ] }, package_data=package_data("imagesgallery", ["static", "public"]),