From 4deaaa985f9a6d2a291c9fc9cc11b7f729e71c5f Mon Sep 17 00:00:00 2001 From: Rob Moorman Date: Wed, 31 May 2017 16:28:59 +0200 Subject: [PATCH] Redirect to existing variant if present --- src/wagtail_personalisation/views.py | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/wagtail_personalisation/views.py b/src/wagtail_personalisation/views.py index 0c10f1f..2aebb0c 100644 --- a/src/wagtail_personalisation/views.py +++ b/src/wagtail_personalisation/views.py @@ -111,7 +111,8 @@ def toggle(request, segment_id): def copy_page_view(request, page_id, segment_id): - """Copy page with selected segment. + """Copy page with selected segment. If the page for the selected segment + already exists the user will be redirected to that particular page. :param request: The http request :type request: django.http.HttpRequest @@ -126,8 +127,12 @@ def copy_page_view(request, page_id, segment_id): if request.user.has_perm('wagtailadmin.access_admin'): segment = get_object_or_404(Segment, pk=segment_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]) + variants = page.variants_for_segments([segment]) + if variants.exists(): + variant = variants.first() + else: + variant = page.copy_for_segment(segment) + edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id]) return HttpResponseRedirect(edit_url)