8

Refactor personalisable pages

Instead of working with django model mixins it now uses a separate
model entity to keep track of the personalized pages (metadata).

The current downside of this approach is that the segment of an existing
variant is no longer easily adjustable for now.
This commit is contained in:
Michael van Tellingen
2017-05-31 21:31:32 +02:00
parent c2735807b4
commit 7076973fc8
9 changed files with 157 additions and 70 deletions

View File

@@ -122,11 +122,13 @@ 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
variants = page.variants_for_segments([segment])
metadata = page.personalisable_metadata
variants = metadata.variants_for_segments([segment])
if variants.exists():
variant = variants.first()
else:
variant = page.copy_for_segment(segment)
variant = metadata.copy_for_segment(segment)
edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id])
return HttpResponseRedirect(edit_url)