7

refactor and add tests

This commit is contained in:
Paul J Stevens
2017-05-31 15:24:28 +02:00
committed by Michael van Tellingen
parent 623af1a06a
commit ebef7f8785
16 changed files with 177 additions and 67 deletions

View File

@ -9,7 +9,7 @@ from wagtail.contrib.modeladmin.options import ModelAdmin, modeladmin_register
from wagtail.contrib.modeladmin.views import IndexView
from wagtail.wagtailcore.models import Page
from wagtail_personalisation.models import PersonalisablePageMixin, Segment
from wagtail_personalisation.models import Segment
class SegmentModelIndexView(IndexView):
@ -123,28 +123,11 @@ def copy_page_view(request, page_id, segment_id):
:rtype: django.http.HttpResponseRedirect
"""
model = PersonalisablePageMixin.get_model()
if request.user.has_perm('wagtailadmin.access_admin'):
segment = get_object_or_404(Segment, pk=segment_id)
page = get_object_or_404(model, pk=page_id)
slug = "{}-{}".format(page.slug, segment.encoded_name())
title = "{} ({})".format(page.title, segment.name)
update_attrs = {
'title': title,
'slug': slug,
'segment': segment,
'live': False,
'canonical_page': page,
'is_segmented': True,
}
try:
variant = Page.objects.get(slug=slug, parent=page.parent)
except Page.DoesNotExist:
variant = page.copy(update_attrs=update_attrs, copy_revisions=False)
edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id])
page = get_object_or_404(Page, pk=page_id).specific
new_page = page.copy_for_segment(segment)
edit_url = reverse('wagtailadmin_pages:edit', args=[new_page.id])
return HttpResponseRedirect(edit_url)