Rename variations to variants
This commit is contained in:
@ -21,7 +21,7 @@ class Migration(migrations.Migration):
|
|||||||
fields=[
|
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')),
|
('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)),
|
('is_segmented', models.BooleanField(default=False)),
|
||||||
('canonical_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='variations', to='wagtail_personalisation.PersonalisablePage')),
|
('canonical_page', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='variants', to='wagtail_personalisation.PersonalisablePage')),
|
||||||
],
|
],
|
||||||
options={
|
options={
|
||||||
'abstract': False,
|
'abstract': False,
|
||||||
|
@ -126,19 +126,19 @@ class PersonalisablePageMetadata(ClusterableModel):
|
|||||||
Segment, related_name='page_metadata', null=True, blank=True)
|
Segment, related_name='page_metadata', null=True, blank=True)
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def has_variations(self):
|
def has_variants(self):
|
||||||
"""Return a boolean indicating whether or not the personalisable page
|
"""Return a boolean indicating whether or not the personalisable page
|
||||||
has variations.
|
has variants.
|
||||||
|
|
||||||
:returns: A boolean indicating whether or not the personalisable page
|
:returns: A boolean indicating whether or not the personalisable page
|
||||||
has variations.
|
has variants.
|
||||||
:rtype: bool
|
:rtype: bool
|
||||||
|
|
||||||
"""
|
"""
|
||||||
return self.variations.exists()
|
return self.variants_metadata.exists()
|
||||||
|
|
||||||
@cached_property
|
@cached_property
|
||||||
def variations(self):
|
def variants_metadata(self):
|
||||||
return (
|
return (
|
||||||
PersonalisablePageMetadata.objects
|
PersonalisablePageMetadata.objects
|
||||||
.filter(canonical_page_id=self.canonical_page_id)
|
.filter(canonical_page_id=self.canonical_page_id)
|
||||||
@ -179,7 +179,7 @@ class PersonalisablePageMetadata(ClusterableModel):
|
|||||||
segment=segment)
|
segment=segment)
|
||||||
return new_page
|
return new_page
|
||||||
|
|
||||||
def variants_for_segments(self, segments):
|
def metadata_for_segments(self, segments):
|
||||||
return (
|
return (
|
||||||
self.__class__.objects
|
self.__class__.objects
|
||||||
.filter(
|
.filter(
|
||||||
|
@ -128,9 +128,9 @@ def copy_page_view(request, page_id, segment_id):
|
|||||||
page = get_object_or_404(Page, pk=page_id).specific
|
page = get_object_or_404(Page, pk=page_id).specific
|
||||||
|
|
||||||
metadata = page.personalisation_metadata
|
metadata = page.personalisation_metadata
|
||||||
variants = metadata.variants_for_segments([segment])
|
variant_metadata = metadata.metadata_for_segments([segment])
|
||||||
if variants.exists():
|
if variant_metadata.exists():
|
||||||
variant = variants.first()
|
variant = variant_metadata.first()
|
||||||
else:
|
else:
|
||||||
variant = metadata.copy_for_segment(segment)
|
variant = metadata.copy_for_segment(segment)
|
||||||
edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id])
|
edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id])
|
||||||
|
@ -58,7 +58,7 @@ def segment_user(page, request, serve_args, serve_kwargs):
|
|||||||
|
|
||||||
|
|
||||||
@hooks.register('before_serve_page')
|
@hooks.register('before_serve_page')
|
||||||
def serve_variation(page, request, serve_args, serve_kwargs):
|
def serve_variant(page, request, serve_args, serve_kwargs):
|
||||||
"""Apply a segment to a visitor before serving the page.
|
"""Apply a segment to a visitor before serving the page.
|
||||||
|
|
||||||
:param page: The page being served
|
:param page: The page being served
|
||||||
@ -81,14 +81,14 @@ def serve_variation(page, request, serve_args, serve_kwargs):
|
|||||||
metadata = page.personalisation_metadata
|
metadata = page.personalisation_metadata
|
||||||
|
|
||||||
# TODO: This is never more then one page? (fix query count)
|
# TODO: This is never more then one page? (fix query count)
|
||||||
variations = metadata.variants_for_segments(user_segments)
|
metadata = metadata.metadata_for_segments(user_segments)
|
||||||
if variations:
|
if metadata:
|
||||||
variation = variations.first().variant.specific
|
variant = metadata.first().variant.specific
|
||||||
return variation.serve(request, *serve_args, **serve_kwargs)
|
return variant.serve(request, *serve_args, **serve_kwargs)
|
||||||
|
|
||||||
|
|
||||||
@hooks.register('construct_explorer_page_queryset')
|
@hooks.register('construct_explorer_page_queryset')
|
||||||
def dont_show_variations(parent_page, pages, request):
|
def dont_show_variant(parent_page, pages, request):
|
||||||
return [page for page in pages
|
return [page for page in pages
|
||||||
if (page.personalisation_metadata is None)
|
if (page.personalisation_metadata is None)
|
||||||
or (page.personalisation_metadata.is_canonical)]
|
or (page.personalisation_metadata.is_canonical)]
|
||||||
@ -126,9 +126,9 @@ def page_listing_more_buttons(page, page_perms, is_parent=False):
|
|||||||
|
|
||||||
metadata = page.personalisation_metadata
|
metadata = page.personalisation_metadata
|
||||||
|
|
||||||
for variation in metadata.variations:
|
for vm in metadata.variants_metadata:
|
||||||
yield Button('%s variation' % (variation.segment.name),
|
yield Button('%s variation' % (vm.segment.name),
|
||||||
reverse('wagtailadmin_pages:edit', args=[variation.variant_id]),
|
reverse('wagtailadmin_pages:edit', args=[vm.variant_id]),
|
||||||
attrs={"title": _('Edit this variant')},
|
attrs={"title": _('Edit this variant')},
|
||||||
classes=("icon", "icon-fa-pencil"),
|
classes=("icon", "icon-fa-pencil"),
|
||||||
priority=0)
|
priority=0)
|
||||||
|
@ -18,10 +18,10 @@ def test_segment_create():
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_metadata_page_has_variations(segmented_page):
|
def test_metadata_page_has_variants(segmented_page):
|
||||||
assert not segmented_page.personalisation_metadata.is_canonical
|
assert not segmented_page.personalisation_metadata.is_canonical
|
||||||
assert not segmented_page.personalisation_metadata.has_variations
|
assert not segmented_page.personalisation_metadata.has_variants
|
||||||
|
|
||||||
canonical = segmented_page.personalisation_metadata.canonical_page
|
canonical = segmented_page.personalisation_metadata.canonical_page
|
||||||
assert canonical.personalisation_metadata.is_canonical
|
assert canonical.personalisation_metadata.is_canonical
|
||||||
assert canonical.personalisation_metadata.has_variations
|
assert canonical.personalisation_metadata.has_variants
|
||||||
|
@ -5,29 +5,29 @@ from wagtail_personalisation import adapters, wagtail_hooks
|
|||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_serve_variation_no_variant(site, rf):
|
def test_serve_variant_no_variant(site, rf):
|
||||||
page = site.root_page
|
page = site.root_page
|
||||||
request = rf.get('/')
|
request = rf.get('/')
|
||||||
args = tuple()
|
args = tuple()
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
result = wagtail_hooks.serve_variation(page, request, args, kwargs)
|
result = wagtail_hooks.serve_variant(page, request, args, kwargs)
|
||||||
assert result is None
|
assert result is None
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_serve_variation_with_variant_no_segment(site, rf, segmented_page):
|
def test_serve_variant_with_variant_no_segment(site, rf, segmented_page):
|
||||||
request = rf.get('/')
|
request = rf.get('/')
|
||||||
args = tuple()
|
args = tuple()
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
|
|
||||||
page = segmented_page.personalisation_metadata.canonical_page
|
page = segmented_page.personalisation_metadata.canonical_page
|
||||||
result = wagtail_hooks.serve_variation(page, request, args, kwargs)
|
result = wagtail_hooks.serve_variant(page, request, args, kwargs)
|
||||||
assert result is None
|
assert result is None
|
||||||
|
|
||||||
|
|
||||||
@pytest.mark.django_db
|
@pytest.mark.django_db
|
||||||
def test_serve_variation_with_variant_segmented(site, rf, segmented_page):
|
def test_serve_variant_with_variant_segmented(site, rf, segmented_page):
|
||||||
request = rf.get('/')
|
request = rf.get('/')
|
||||||
args = tuple()
|
args = tuple()
|
||||||
kwargs = {}
|
kwargs = {}
|
||||||
@ -38,7 +38,7 @@ def test_serve_variation_with_variant_segmented(site, rf, segmented_page):
|
|||||||
adapter = adapters.get_segment_adapter(request)
|
adapter = adapters.get_segment_adapter(request)
|
||||||
adapter.set_segments([segment])
|
adapter.set_segments([segment])
|
||||||
|
|
||||||
result = wagtail_hooks.serve_variation(page, request, args, kwargs)
|
result = wagtail_hooks.serve_variant(page, request, args, kwargs)
|
||||||
assert result.status_code == 200
|
assert result.status_code == 200
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user