mirror of
https://github.com/wagtail/wagtail.git
synced 2024-12-01 03:31:04 +01:00
Merge pull request #769 from kaedroho/issue-735
Don't update descendant urls if slug not updated. Fixes #735
This commit is contained in:
commit
10f4d05894
@ -337,14 +337,17 @@ class Page(six.with_metaclass(PageBase, MP_Node, ClusterableModel, index.Indexed
|
||||
# has been set and so we can safely call get_parent
|
||||
self.set_url_path(self.get_parent())
|
||||
else:
|
||||
# see if the slug has changed from the record in the db, in which case we need to
|
||||
# update url_path of self and all descendants
|
||||
old_record = Page.objects.get(id=self.id)
|
||||
if old_record.slug != self.slug:
|
||||
self.set_url_path(self.get_parent())
|
||||
update_descendant_url_paths = True
|
||||
old_url_path = old_record.url_path
|
||||
new_url_path = self.url_path
|
||||
# Check that we are committing the slug to the database
|
||||
# Basically: If update_fields has been specified, and slug is not included, skip this step
|
||||
if not ('update_fields' in kwargs and 'slug' not in kwargs['update_fields']):
|
||||
# see if the slug has changed from the record in the db, in which case we need to
|
||||
# update url_path of self and all descendants
|
||||
old_record = Page.objects.get(id=self.id)
|
||||
if old_record.slug != self.slug:
|
||||
self.set_url_path(self.get_parent())
|
||||
update_descendant_url_paths = True
|
||||
old_url_path = old_record.url_path
|
||||
new_url_path = self.url_path
|
||||
|
||||
result = super(Page, self).save(*args, **kwargs)
|
||||
|
||||
|
@ -600,3 +600,23 @@ class TestSubpageTypeBusinessRules(TestCase):
|
||||
# BusinessSubIndex only allows BusinessIndex as a parent
|
||||
self.assertNotIn(ContentType.objects.get_for_model(SimplePage), BusinessSubIndex.allowed_parent_page_types())
|
||||
self.assertIn(ContentType.objects.get_for_model(BusinessIndex), BusinessSubIndex.allowed_parent_page_types())
|
||||
|
||||
|
||||
class TestIssue735(TestCase):
|
||||
"""
|
||||
Issue 735 reports that URL paths of child pages are not
|
||||
updated correctly when slugs of parent pages are updated
|
||||
"""
|
||||
fixtures = ['test.json']
|
||||
|
||||
def test_child_urls_updated_on_parent_publish(self):
|
||||
event_index = Page.objects.get(url_path='/home/events/')
|
||||
christmas_event = EventPage.objects.get(url_path='/home/events/christmas/')
|
||||
|
||||
# Change the event index slug and publish it
|
||||
event_index.slug = 'old-events'
|
||||
event_index.save_revision().publish()
|
||||
|
||||
# Check that the christmas events url path updated correctly
|
||||
new_christmas_event = EventPage.objects.get(id=christmas_event.id)
|
||||
self.assertEqual(new_christmas_event.url_path, '/home/old-events/christmas/')
|
||||
|
Loading…
Reference in New Issue
Block a user