diff --git a/setup.cfg b/setup.cfg index 7372df3..81f1bde 100644 --- a/setup.cfg +++ b/setup.cfg @@ -32,6 +32,9 @@ classifiers = Framework :: Django :: 4.0 Framework :: Django :: 4.1 Framework :: Django :: 4.2 + Framework :: Django :: 5.0 + Framework :: Django :: 5.1 + Framework :: Django :: 5.2 Programming Language :: Python Programming Language :: Python :: 3 Programming Language :: Python :: 3.6 @@ -40,6 +43,7 @@ classifiers = Programming Language :: Python :: 3.9 Programming Language :: Python :: 3.10 Programming Language :: Python :: 3.11 + Programming Language :: Python :: 3.12 License :: OSI Approved :: MIT License [options] diff --git a/src/django_mermaid/__init__.py b/src/django_mermaid/__init__.py index 00ec2dc..3dc1f76 100644 --- a/src/django_mermaid/__init__.py +++ b/src/django_mermaid/__init__.py @@ -1 +1 @@ -__version__ = "0.0.9" +__version__ = "0.1.0" diff --git a/src/django_mermaid/apps.py b/src/django_mermaid/apps.py index 340bd9a..3b16c7d 100644 --- a/src/django_mermaid/apps.py +++ b/src/django_mermaid/apps.py @@ -7,18 +7,24 @@ from .templatetags import DEFAULT_VERSION from .templatetags import MERMAID_CDN +def download_if_necessary(version): + """Download mermaid.js from CDN if not already present""" + cdn = "https://cdnjs.cloudflare.com/ajax/libs/mermaid/%s/mermaid.min.js" % version + current_dir = pathlib.Path(__file__).parent + static_dir = current_dir / "static" + mermaid_dir = static_dir / "mermaid" / version + mermaid_js = mermaid_dir / "mermaid.js" + if not mermaid_js.exists() or \ + mermaid_js.stat().st_size == 0: + mermaid_dir.mkdir(parents=True, exist_ok=True) + urlretrieve(MERMAID_CDN % version, str(mermaid_js)) + class MermaidConfig(AppConfig): name = "django_mermaid" def ready(self): - """Download mermaid.js from CDN if not already present""" - version = getattr(settings, "MERMAID_VERSION", DEFAULT_VERSION) - current_dir = pathlib.Path(__file__).parent - static_dir = current_dir / "static" - mermaid_dir = static_dir / "mermaid" / version - mermaid_js = mermaid_dir / "mermaid.js" - if not mermaid_js.exists() or \ - mermaid_js.stat().st_size == 0: - mermaid_dir.mkdir(parents=True, exist_ok=True) - urlretrieve(MERMAID_CDN % version, str(mermaid_js)) + if not getattr(settings, "MERMAID_USE_CDN", False): + version = getattr(settings, "MERMAID_VERSION", DEFAULT_VERSION) + download_if_necessary(version) + diff --git a/src/django_mermaid/templatetags/mermaid.py b/src/django_mermaid/templatetags/mermaid.py index 44e86cd..bcfa46f 100644 --- a/src/django_mermaid/templatetags/mermaid.py +++ b/src/django_mermaid/templatetags/mermaid.py @@ -55,7 +55,7 @@ def startmermaid(parser, token): else: theme = None - nodelist = parser.parse(('endmermaid',)) + nodelist = parser.parse(("endmermaid",)) parser.delete_first_token() return MermaidNode(nodelist, theme) diff --git a/tests/test_package.py b/tests/test_package.py new file mode 100644 index 0000000..b7a2e84 --- /dev/null +++ b/tests/test_package.py @@ -0,0 +1,39 @@ +from os.path import exists, join +from unittest.mock import patch + +from django.apps import apps +from django.test import override_settings + +try: + import site + + site_packages = site.getsitepackages()[0] +except (ImportError, IndexError): + import sysconfig + + site_packages = sysconfig.get_paths()["purelib"] + + +@override_settings(MERMAID_USE_CDN=False) +@patch("django_mermaid.apps.download_if_necessary") +def test_download_called_when_use_cdn_false(mock_download): + # Re-run the AppConfig.ready() method manually + app_config = apps.get_app_config("django_mermaid") + app_config.ready() + + mock_download.assert_called_once() + + +@override_settings(MERMAID_USE_CDN=True) +@patch("django_mermaid.apps.download_if_necessary") +def test_download_not_called_when_use_cdn_true(mock_download): + app_config = apps.get_app_config("django_mermaid") + app_config.ready() + + mock_download.assert_not_called() + + +def test_tag_use_custom_version(): + static_dir = join(site_packages, "django_mermaid", "static") + assert exists(join(static_dir, "mermaid", "8.6.3", "mermaid.js")) + assert exists(join(static_dir, "mermaid", "9.4.3", "mermaid.js")) diff --git a/tests/test_tag.py b/tests/test_tag.py index c3d6d55..b595b6b 100644 --- a/tests/test_tag.py +++ b/tests/test_tag.py @@ -1,6 +1,3 @@ -from os.path import exists -from os.path import join - import pytest from django.conf import settings from django.template import Context @@ -123,9 +120,3 @@ def test_tag_use_custom_theme_variables_with_base_theme(version, template_code): "" % version ) - - -def test_tag_use_custom_version(): - static_dir = join(site_packages, "django_mermaid", "static") - assert exists(join(static_dir, "mermaid", "8.6.3", "mermaid.js")) - assert exists(join(static_dir, "mermaid", "9.4.3", "mermaid.js"))