Skip to content

Commit

Permalink
fixes #2827
Browse files Browse the repository at this point in the history
  • Loading branch information
digi604 committed Mar 7, 2014
1 parent 6e3b046 commit 910bdb3
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 1 deletion.
10 changes: 9 additions & 1 deletion cms/models/pagemodel.py
Expand Up @@ -174,7 +174,12 @@ def move_page(self, target, position='first-child'):

# make sure move_page does not break when using INHERIT template
# and moving to a top level position

new_parent = target
if position in ('left', 'right'):
if target.parent_id:
new_parent = target.parent
else:
new_parent = None
if (position in ('left', 'right') and not target.parent and is_inherited_template):
self.template = self.get_template()
self.move_to(target, position)
Expand Down Expand Up @@ -610,6 +615,9 @@ def publish(self, language):
title_set__language=language).select_related('publisher_public')
for page in publish_set:
if page.publisher_public:
if not page.publisher_public.parent_id:
page.publisher_public.parent = page.parent.publisher_public
page.publisher_public.save()
if page.publisher_public.parent.is_published(language):
from cms.models import Title
try:
Expand Down
26 changes: 26 additions & 0 deletions cms/tests/publisher.py
Expand Up @@ -598,6 +598,32 @@ def test_unpublish_with_dirty_descendants(self):
self.assertFalse(child.publisher_public.is_published('en'))
self.assertFalse(gchild.publisher_public.is_published('en'))

def test_prepublish_descendants(self):
page = self.create_page("Page", published=True)
child = self.create_page("Child", parent=page, published=False)
gchild2 = self.create_page("Grandchild2", parent=child, published=False)
gchild3 = self.create_page("Grandchild3", parent=child, published=False)
gchild = self.create_page("Grandchild", published=True)
gchild.move_page(target=child, position='last-child')

gchild.publish('en')
self.assertFalse(child.is_published('en'))
self.assertTrue(gchild.is_published('en'))
self.assertEqual(gchild.get_publisher_state('en'), PUBLISHER_STATE_PENDING)
child = child.reload()
child.publish('en')
gchild2 = gchild2.reload()
gchild2.publish('en')
self.assertTrue(child.is_published("en"))
self.assertTrue(gchild.is_published("en"))
self.assertEqual(gchild.get_publisher_state('en', force_reload=True), PUBLISHER_STATE_DEFAULT)
gchild = gchild.reload()
gchild2 = gchild2.reload()
self.assertEqual(gchild.lft, gchild.publisher_public.lft)
self.assertEqual(gchild.rght, gchild.publisher_public.rght)



def test_republish_multiple_root(self):
# TODO: The paths do not match expected behaviour
home = self.create_page("Page", published=True)
Expand Down

0 comments on commit 910bdb3

Please sign in to comment.