diff --git a/sandbox/sandbox/settings.py b/sandbox/sandbox/settings.py index 02c794e..7195b9c 100644 --- a/sandbox/sandbox/settings.py +++ b/sandbox/sandbox/settings.py @@ -79,7 +79,7 @@ MIDDLEWARE = [ 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'wagtail.core.middleware.SiteMiddleware', + 'tail.contrib.legacy.sitemiddleware.SiteMiddleware', 'wagtail.contrib.redirects.middleware.RedirectMiddleware', ] @@ -162,3 +162,12 @@ BASE_URL = 'http://example.com' INTERNAL_IPS = ['127.0.0.1'] + + +# Wagtail +WAGTAIL_I18N_ENABLED = True + +WAGTAIL_CONTENT_LANGUAGES = LANGUAGES = [ + ("en", "English"), + ("nl", "Dutch"), +] diff --git a/src/wagtail_personalisation/forms.py b/src/wagtail_personalisation/forms.py index f3b778c..5b59ad6 100644 --- a/src/wagtail_personalisation/forms.py +++ b/src/wagtail_personalisation/forms.py @@ -1,19 +1,20 @@ from datetime import datetime +import functools from importlib import import_module from django.conf import settings from django.contrib.auth import get_user_model from django.contrib.auth.models import AnonymousUser -from django.contrib.staticfiles.templatetags.staticfiles import static +from django.templatetags.static import static from django.test.client import RequestFactory -from django.utils.lru_cache import lru_cache +# from django.utils.lru_cache import lru_cache from django.utils.translation import ugettext_lazy as _ from wagtail.admin.forms import WagtailAdminModelForm SessionStore = import_module(settings.SESSION_ENGINE).SessionStore -@lru_cache(maxsize=1000) +@functools.lru_cache(maxsize=1000) def user_from_data(user_id): User = get_user_model() try: diff --git a/src/wagtail_personalisation/wagtail_hooks.py b/src/wagtail_personalisation/wagtail_hooks.py index c15b8b1..945d72c 100644 --- a/src/wagtail_personalisation/wagtail_hooks.py +++ b/src/wagtail_personalisation/wagtail_hooks.py @@ -11,7 +11,7 @@ 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 import get_valid_next_url_from_request +from wagtail.admin.views.pages.utils import get_valid_next_url_from_request from wagtail.admin.widgets import Button, ButtonWithDropdownFromHook from wagtail.core import hooks from wagtail.core.models import Page diff --git a/tests/factories/page.py b/tests/factories/page.py index 6395263..41e0a32 100644 --- a/tests/factories/page.py +++ b/tests/factories/page.py @@ -2,12 +2,19 @@ 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 +class LocaleFactory(factory.django.DjangoModelFactory): + language_code = "en" + + class Meta: + model = Locale + class ContentPageFactory(PageFactory): parent = None title = 'Test page' diff --git a/tests/fixtures.py b/tests/fixtures.py index 9f5adfc..685e29f 100644 --- a/tests/fixtures.py +++ b/tests/fixtures.py @@ -4,13 +4,14 @@ 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, RegularPageFactory +from tests.factories.page import ContentPageFactory, LocaleFactory, RegularPageFactory from tests.factories.segment import SegmentFactory from tests.factories.site import SiteFactory @pytest.fixture(scope='function') def site(): + LocaleFactory() root_page = ContentPageFactory(parent=None, slug='') site = SiteFactory(is_default_site=True, root_page=root_page) diff --git a/tests/settings.py b/tests/settings.py index b02ff71..858f17e 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -59,7 +59,7 @@ MIDDLEWARE = ( 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', - 'wagtail.core.middleware.SiteMiddleware', + 'wagtail.contrib.legacy.sitemiddleware.SiteMiddleware', ) INSTALLED_APPS = ( @@ -91,3 +91,18 @@ PASSWORD_HASHERS = ( ) WAGTAIL_SITE_NAME = 'wagtail-personalisation test' + + +# LANGUAGE_CODE = "en" +# TIME_ZONE = "UTC" +# USE_I18N = True +# USE_L10N = True +# USE_TZ = True + +# # Wagtail +# WAGTAIL_I18N_ENABLED = True + +# WAGTAIL_CONTENT_LANGUAGES = LANGUAGES = [ +# ("en", "English"), +# ("nl", "Dutch"), +# ] diff --git a/tests/unit/test_models.py b/tests/unit/test_models.py index df2d5f0..f858585 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 +from tests.factories.page import ContentPageFactory, LocaleFactory from tests.factories.segment import SegmentFactory from tests.site.pages import models from wagtail_personalisation.models import PersonalisablePageMetadata, Segment @@ -31,6 +31,7 @@ def test_metadata_page_has_variants(segmented_page): @pytest.mark.django_db def test_content_page_model(): + LocaleFactory() page = ContentPageFactory() qs = models.ContentPage.objects.all() assert page in qs @@ -76,5 +77,5 @@ def test_sitemap_generation_for_variants_is_disabled(segmented_page): @pytest.mark.django_db def test_segment_edit_view(site, client, django_user_model): test_segment = SegmentFactory() - new_panel = test_segment.panels[1].children[0].bind_to_model(Segment) + new_panel = test_segment.panels[1].children[0].bind_to(model=Segment) assert new_panel.related.name == "wagtail_personalisation_timerules" diff --git a/tests/unit/test_utils.py b/tests/unit/test_utils.py index cdbfe62..5b4c38d 100644 --- a/tests/unit/test_utils.py +++ b/tests/unit/test_utils.py @@ -3,13 +3,14 @@ from django.test import override_settings from wagtail.core.models import Page as WagtailPage from tests.factories.page import ( - ContentPageFactory, PersonalisablePageMetadataFactory) + ContentPageFactory, LocaleFactory, PersonalisablePageMetadataFactory) from wagtail_personalisation.utils import ( can_delete_pages, exclude_variants, get_client_ip, impersonate_other_page) @pytest.fixture def rootpage(): + LocaleFactory() return ContentPageFactory(parent=None, path='/', depth=0, title='root') @@ -71,6 +72,7 @@ def test_exclude_variants_with_pages_querysets(): ''' Test that excludes variant works for querysets ''' + LocaleFactory() for i in range(5): page = ContentPageFactory(path="/" + str(i), depth=0, url_path="/", title="Hoi " + str(i)) page.save() @@ -86,6 +88,7 @@ def test_exclude_variants_with_pages_querysets_not_canonical(): Test that excludes variant works for querysets with personalisation_metadata canonical False ''' + LocaleFactory() for i in range(5): page = ContentPageFactory(path="/" + str(i), depth=0, url_path="/", title="Hoi " + str(i)) page.save() @@ -106,6 +109,7 @@ def test_exclude_variants_with_pages_querysets_meta_none(): ''' Test that excludes variant works for querysets with meta as none ''' + LocaleFactory() for i in range(5): page = ContentPageFactory(path="/" + str(i), depth=0, url_path="/", title="Hoi " + str(i)) page.save()