support multiple uses of the mixin class (#140)
This commit is contained in:
committed by
Rob Moorman
parent
4deaaa985f
commit
99d2e4a347
@ -103,7 +103,7 @@ class PersonalisablePageMixin(models.Model):
|
||||
blank=True, null=True
|
||||
)
|
||||
segment = models.ForeignKey(
|
||||
Segment, related_name='segments', on_delete=models.PROTECT,
|
||||
Segment, related_name='+', on_delete=models.PROTECT,
|
||||
blank=True, null=True
|
||||
)
|
||||
is_segmented = models.BooleanField(default=False)
|
||||
|
@ -4,12 +4,20 @@ import factory
|
||||
from django.utils.text import slugify
|
||||
from wagtail_factories.factories import MP_NodeFactory
|
||||
|
||||
from tests.sandbox.pages.models import HomePage
|
||||
from tests.sandbox.pages.models import HomePage, SpecialPage
|
||||
|
||||
|
||||
class PageFactory(MP_NodeFactory):
|
||||
class HomePageFactory(MP_NodeFactory):
|
||||
title = 'Test page'
|
||||
slug = factory.LazyAttribute(lambda obj: slugify(obj.title))
|
||||
|
||||
class Meta:
|
||||
model = HomePage
|
||||
|
||||
|
||||
class SpecialPageFactory(MP_NodeFactory):
|
||||
title = 'Test page'
|
||||
slug = factory.LazyAttribute(lambda obj: slugify(obj.title))
|
||||
|
||||
class Meta:
|
||||
model = SpecialPage
|
||||
|
@ -1,14 +1,14 @@
|
||||
import factory
|
||||
from wagtail.wagtailcore.models import Site
|
||||
|
||||
from tests.factories.page import PageFactory
|
||||
from tests.factories.page import HomePageFactory
|
||||
|
||||
|
||||
class SiteFactory(factory.DjangoModelFactory):
|
||||
hostname = 'localhost'
|
||||
port = factory.Sequence(lambda n: 81 + n)
|
||||
site_name = 'Test site'
|
||||
root_page = factory.SubFactory(PageFactory, parent=None)
|
||||
root_page = factory.SubFactory(HomePageFactory, parent=None)
|
||||
is_default_site = False
|
||||
|
||||
class Meta:
|
||||
|
@ -1,10 +1,10 @@
|
||||
import pytest
|
||||
|
||||
from django.contrib.auth.models import AnonymousUser
|
||||
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 PageFactory
|
||||
|
||||
from tests.factories.page import HomePageFactory, SpecialPageFactory
|
||||
from tests.factories.segment import SegmentFactory
|
||||
from tests.factories.site import SiteFactory
|
||||
|
||||
@ -12,14 +12,16 @@ from tests.factories.site import SiteFactory
|
||||
@pytest.fixture(scope='function')
|
||||
def site():
|
||||
site = SiteFactory(is_default_site=True)
|
||||
PageFactory(parent=site.root_page, slug='page-1')
|
||||
PageFactory(parent=site.root_page, slug='page-2')
|
||||
page1 = HomePageFactory(parent=site.root_page, slug='page-1')
|
||||
page2 = HomePageFactory(parent=site.root_page, slug='page-2')
|
||||
SpecialPageFactory(parent=page1, slug='page-1-1')
|
||||
SpecialPageFactory(parent=page2, slug='page-2-1')
|
||||
return site
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def segmented_page(site):
|
||||
page = PageFactory(parent=site.root_page)
|
||||
page = HomePageFactory(parent=site.root_page)
|
||||
segment = SegmentFactory()
|
||||
return page.copy_for_segment(segment)
|
||||
|
||||
|
40
tests/sandbox/pages/migrations/0002_auto_20170531_0915.py
Normal file
40
tests/sandbox/pages/migrations/0002_auto_20170531_0915.py
Normal file
@ -0,0 +1,40 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.1 on 2017-05-31 09:15
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
import wagtail.wagtailcore.fields
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('wagtail_personalisation', '0009_auto_20170531_0428'),
|
||||
('wagtailcore', '0033_remove_golive_expiry_help_text'),
|
||||
('pages', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='SpecialPage',
|
||||
fields=[
|
||||
('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.Page')),
|
||||
('is_segmented', models.BooleanField(default=False)),
|
||||
('subtitle', models.CharField(blank=True, default='', max_length=255)),
|
||||
('body', wagtail.wagtailcore.fields.RichTextField(blank=True, default='')),
|
||||
('special', wagtail.wagtailcore.fields.RichTextField(blank=True, default='')),
|
||||
('canonical_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='variations', to='pages.SpecialPage')),
|
||||
('segment', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtail_personalisation.Segment')),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=('wagtailcore.page', models.Model),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='homepage',
|
||||
name='segment',
|
||||
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='wagtail_personalisation.Segment'),
|
||||
),
|
||||
]
|
@ -16,3 +16,15 @@ class HomePage(PersonalisablePageMixin, Page):
|
||||
FieldPanel('subtitle'),
|
||||
FieldPanel('body'),
|
||||
]
|
||||
|
||||
|
||||
class SpecialPage(PersonalisablePageMixin, Page):
|
||||
subtitle = models.CharField(max_length=255, blank=True, default='')
|
||||
body = RichTextField(blank=True, default='')
|
||||
special = RichTextField(blank=True, default='')
|
||||
|
||||
content_panels = Page.content_panels + [
|
||||
FieldPanel('subtitle'),
|
||||
FieldPanel('body'),
|
||||
FieldPanel('special'),
|
||||
]
|
||||
|
@ -4,11 +4,11 @@ import datetime
|
||||
|
||||
import pytest
|
||||
|
||||
from tests.factories.page import HomePageFactory
|
||||
from tests.factories.rule import (
|
||||
DayRuleFactory, DeviceRuleFactory, ReferralRuleFactory, TimeRuleFactory)
|
||||
from tests.factories.segment import SegmentFactory
|
||||
from tests.factories.site import SiteFactory
|
||||
from tests.factories.page import PageFactory
|
||||
from wagtail_personalisation.models import Segment
|
||||
from wagtail_personalisation.rules import TimeRule
|
||||
|
||||
@ -98,5 +98,5 @@ def test_site_factory():
|
||||
def test_page_factory():
|
||||
site = SiteFactory()
|
||||
assert site.root_page
|
||||
page = PageFactory(parent=site.root_page)
|
||||
page = HomePageFactory(parent=site.root_page)
|
||||
assert page.get_parent() == site.root_page
|
||||
|
@ -5,7 +5,6 @@ import datetime
|
||||
import pytest
|
||||
from freezegun import freeze_time
|
||||
|
||||
from tests.factories.page import PageFactory
|
||||
from tests.factories.rule import (
|
||||
DayRuleFactory, DeviceRuleFactory, QueryRuleFactory, ReferralRuleFactory,
|
||||
TimeRuleFactory, VisitCountRuleFactory)
|
||||
|
Reference in New Issue
Block a user