diff --git a/setup.py b/setup.py index 6e9a189..84879e9 100644 --- a/setup.py +++ b/setup.py @@ -19,7 +19,7 @@ tests_require = [ 'pytest-django==3.1.2', 'pytest-pythonpath==0.7.2', 'pytest-sugar==0.9.1', - 'pytest==3.4.2', + 'pytest==6.1.2', 'wagtail_factories==1.1.0', 'pytest-mock==1.6.3', ] diff --git a/src/wagtail_personalisation/wagtail_hooks.py b/src/wagtail_personalisation/wagtail_hooks.py index 945d72c..ca8f451 100644 --- a/src/wagtail_personalisation/wagtail_hooks.py +++ b/src/wagtail_personalisation/wagtail_hooks.py @@ -11,7 +11,12 @@ from django.utils.safestring import mark_safe from django.utils.translation import ugettext_lazy as _ from wagtail.admin import messages from wagtail.admin.site_summary import PagesSummaryItem, SummaryItem -from wagtail.admin.views.pages.utils import get_valid_next_url_from_request + +try: + from wagtail.admin.views.pages.utils import get_valid_next_url_from_request +except ModuleNotFoundError: + from wagtail.admin.views.pages import get_valid_next_url_from_request # noqa + from wagtail.admin.widgets import Button, ButtonWithDropdownFromHook from wagtail.core import hooks from wagtail.core.models import Page @@ -23,6 +28,8 @@ from wagtail_personalisation.models import PersonalisablePageMetadata logger = logging.getLogger(__name__) + + @hooks.register('register_admin_urls') def register_admin_urls(): """Adds the administration urls for the personalisation apps.""" diff --git a/tests/factories/page.py b/tests/factories/page.py index 41e0a32..1442eb2 100644 --- a/tests/factories/page.py +++ b/tests/factories/page.py @@ -2,18 +2,21 @@ from __future__ import absolute_import, unicode_literals import factory from django.utils.text import slugify -from wagtail.core.models import Locale from wagtail_factories.factories import PageFactory from tests.site.pages import models from wagtail_personalisation.models import PersonalisablePageMetadata +try: + from wagtail.core.models import Locale -class LocaleFactory(factory.django.DjangoModelFactory): - language_code = "en" + class LocaleFactory(factory.django.DjangoModelFactory): + language_code = "en" - class Meta: - model = Locale + class Meta: + model = Locale +except ImportError: + pass class ContentPageFactory(PageFactory): parent = None diff --git a/tests/fixtures.py b/tests/fixtures.py index 685e29f..a35e7f8 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -4,14 +4,18 @@ from django.contrib.messages.storage.fallback import FallbackStorage from django.contrib.sessions.backends.db import SessionStore from django.test.client import RequestFactory as BaseRequestFactory -from tests.factories.page import ContentPageFactory, LocaleFactory, RegularPageFactory +from tests.factories.page import ContentPageFactory, RegularPageFactory from tests.factories.segment import SegmentFactory from tests.factories.site import SiteFactory @pytest.fixture(scope='function') def site(): - LocaleFactory() + try: + from tests.factories.page import LocaleFactory + LocaleFactory() + except ImportError: + pass root_page = ContentPageFactory(parent=None, slug='') site = SiteFactory(is_default_site=True, root_page=root_page) diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py index f858585..a641bea 100644 --- a/tests/unit/test_models.py +++ b/tests/unit/test_models.py @@ -3,7 +3,7 @@ import datetime import pytest from django.db.models import ProtectedError -from tests.factories.page import ContentPageFactory, LocaleFactory +from tests.factories.page import ContentPageFactory from tests.factories.segment import SegmentFactory from tests.site.pages import models from wagtail_personalisation.models import PersonalisablePageMetadata, Segment @@ -31,7 +31,11 @@ def test_metadata_page_has_variants(segmented_page): @pytest.mark.django_db def test_content_page_model(): - LocaleFactory() + try: + from tests.factories.page import LocaleFactory + LocaleFactory() + except ImportError: + pass page = ContentPageFactory() qs = models.ContentPage.objects.all() assert page in qs diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index 5b4c38d..75ae92c 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -2,15 +2,24 @@ import pytest from django.test import override_settings from wagtail.core.models import Page as WagtailPage -from tests.factories.page import ( - ContentPageFactory, LocaleFactory, PersonalisablePageMetadataFactory) +from tests.factories.page import (ContentPageFactory, PersonalisablePageMetadataFactory) from wagtail_personalisation.utils import ( can_delete_pages, exclude_variants, get_client_ip, impersonate_other_page) +locale_factory = False + +try: + from tests.factories.page import LocaleFactory + locale_factory = True +except ImportError: + pass + + @pytest.fixture def rootpage(): - LocaleFactory() + if locale_factory: + LocaleFactory() return ContentPageFactory(parent=None, path='/', depth=0, title='root') @@ -72,7 +81,8 @@ def test_exclude_variants_with_pages_querysets(): ''' Test that excludes variant works for querysets ''' - LocaleFactory() + if locale_factory: + LocaleFactory() for i in range(5): page = ContentPageFactory(path="/" + str(i), depth=0, url_path="/", title="Hoi " + str(i)) page.save() @@ -88,7 +98,8 @@ def test_exclude_variants_with_pages_querysets_not_canonical(): Test that excludes variant works for querysets with personalisation_metadata canonical False ''' - LocaleFactory() + if locale_factory: + LocaleFactory() for i in range(5): page = ContentPageFactory(path="/" + str(i), depth=0, url_path="/", title="Hoi " + str(i)) page.save() @@ -109,7 +120,8 @@ def test_exclude_variants_with_pages_querysets_meta_none(): ''' Test that excludes variant works for querysets with meta as none ''' - LocaleFactory() + if locale_factory: + LocaleFactory() for i in range(5): page = ContentPageFactory(path="/" + str(i), depth=0, url_path="/", title="Hoi " + str(i)) page.save()