From 858dd11cc658e36d03f2da40402a30330d6f85b9 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Fri, 1 Aug 2014 16:01:51 +0100 Subject: [PATCH] Move the 'should we display the publish_copies checkbox' logic into CopyForm --- wagtail/wagtailadmin/forms.py | 15 +++++++++++---- .../templates/wagtailadmin/pages/copy.html | 5 +---- wagtail/wagtailadmin/views/pages.py | 7 ++----- 3 files changed, 14 insertions(+), 13 deletions(-) diff --git a/wagtail/wagtailadmin/forms.py b/wagtail/wagtailadmin/forms.py index 2f6680c423..2f6f658b7d 100644 --- a/wagtail/wagtailadmin/forms.py +++ b/wagtail/wagtailadmin/forms.py @@ -82,18 +82,25 @@ class CopyForm(forms.Form): def __init__(self, *args, **kwargs): # CopyPage must be passed a 'page' kwarg indicating the page to be copied self.page = kwargs.pop('page') + can_publish = kwargs.pop('can_publish') super(CopyForm, self).__init__(*args, **kwargs) self.fields['new_title'] = forms.CharField(initial=self.page.title) self.fields['new_slug'] = forms.SlugField(initial=self.page.slug) - pages_to_copy_count = self.page.get_descendants(inclusive=True).count() - if pages_to_copy_count > 1: - subpage_count = pages_to_copy_count - 1 + pages_to_copy = self.page.get_descendants(inclusive=True) + subpage_count = pages_to_copy.count() - 1 + if subpage_count > 0: self.fields['copy_subpages'] = forms.BooleanField(required=False, initial=True, help_text=_("This will copy %(count)s subpages.") % {'count': subpage_count}) - publish_copies = forms.BooleanField(required=False, initial=True) + if can_publish: + pages_to_publish_count = pages_to_copy.live().count() + if pages_to_publish_count > 0: + self.fields['publish_copies'] = forms.BooleanField( + required=False, initial=True, + help_text=_("%(count)s of the pages being copied are live. Would you like to publish their copies?") % {'count': pages_to_publish_count} + ) def clean_new_slug(self): # Make sure the slug isn't already in use diff --git a/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html b/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html index 2f675e6cce..1a645c16f2 100644 --- a/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html +++ b/wagtail/wagtailadmin/templates/wagtailadmin/pages/copy.html @@ -18,11 +18,8 @@ {% include "wagtailadmin/shared/field_as_li.html" with field=form.copy_subpages %} {% endif %} - {% if pages_to_publish.count and can_publish %} + {% if form.publish_copies %} {% include "wagtailadmin/shared/field_as_li.html" with field=form.publish_copies %} -
  • - {% blocktrans with live_page_count=pages_to_publish.count %}{{ live_page_count }} of the pages being copied are live. Would you like to publish their copies?{% endblocktrans %} -
  • {% endif %} diff --git a/wagtail/wagtailadmin/views/pages.py b/wagtail/wagtailadmin/views/pages.py index 74e47deb9c..3de6f7cb56 100644 --- a/wagtail/wagtailadmin/views/pages.py +++ b/wagtail/wagtailadmin/views/pages.py @@ -681,7 +681,7 @@ def copy(request, page_id): can_publish = parent_page.permissions_for_user(request.user).can_publish_subpage() # Create the form - form = CopyForm(request.POST or None, page=page) + form = CopyForm(request.POST or None, page=page, can_publish=can_publish) # Check if user is submitting if request.method == 'POST' and form.is_valid(): @@ -695,7 +695,7 @@ def copy(request, page_id): ) # Check if we should keep copied subpages published - publish_copies = can_publish and form.cleaned_data['publish_copies'] + publish_copies = can_publish and form.cleaned_data.get('publish_copies') # Unpublish copied pages if we need to if not publish_copies: @@ -715,9 +715,6 @@ def copy(request, page_id): return render(request, 'wagtailadmin/pages/copy.html', { 'page': page, - 'parent_page': parent_page, - 'pages_to_publish': page.get_descendants(inclusive=True).live(), - 'can_publish': can_publish, 'form': form, })