def test_cannot_create_page_when_can_create_at_returns_false(self): # issue #2892 # Check that creating a second SingletonPage results in a permission # denied error. # SingletonPage overrides the can_create_at method to make it return # False if another SingletonPage already exists. # The Page model now has a max_count attribute (issue 4841), # but we are leaving this test in place to cover existing behaviour and # ensure it does not break any code doing this in the wild. add_url = reverse('wagtailadmin_pages:add', args=[ SingletonPage._meta.app_label, SingletonPage._meta.model_name, self.root_page.pk ]) # A single singleton page should be creatable self.assertTrue(SingletonPage.can_create_at(self.root_page)) response = self.client.get(add_url) self.assertEqual(response.status_code, 200) # Create a singleton page self.root_page.add_child( instance=SingletonPage(title='singleton', slug='singleton')) # A second singleton page should not be creatable self.assertFalse(SingletonPage.can_create_at(self.root_page)) response = self.client.get(add_url) self.assertEqual(response.status_code, 403)
def test_singleton_page_creation(self): root_page = Page.objects.get(url_path='/home/') # A single singleton page should be creatable self.assertTrue(SingletonPage.can_create_at(root_page)) # Create a singleton page root_page.add_child(instance=SingletonPage( title='singleton', slug='singleton')) # A second singleton page should not be creatable self.assertFalse(SingletonPage.can_create_at(root_page))