def copy_page_view(request, page_id, segment_id):
"""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
:param page_id: The primary key of the page
:type segment_id: int
:param segment_id: The primary key of the segment
:type segment_id: int
:returns: A redirect to the new page
:rtype: django.http.HttpResponseRedirect
"""
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
metadata = page.personalisation_metadata
variant_metadata = metadata.metadata_for_segments([segment])
if variant_metadata.exists():
variant = variant_metadata.first()
else:
variant = metadata.copy_for_segment(segment)
edit_url = reverse('wagtailadmin_pages:edit', args=[variant.id])
return HttpResponseRedirect(edit_url)
return HttpResponseForbidden()
评论列表
文章目录