8000 Fixed #6002 -- Prevent users from moving homepage under another page… · czpython/django-cms@68a2d0d · GitHub
[go: up one dir, main page]

Skip to content

Commit 68a2d0d

Browse files
vaquerczpython
authored andcommitted
Fixed django-cms#6002 -- Prevent users from moving homepage under another page (django-cms#6369)
1 parent 6f6e5e8 commit 68a2d0d

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

CHANGELOG.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
  operation was to move a plugin in the top level of same placeholder
1313
* Fixed a bug where xframe options were processed by clickjacking middleware
1414
when page was served from cache, rather then get this value from cache
15+
* Added form validation logic to prevent users from moving the home page under another page.
1516

1617

1718
=== 3.5.2 (2018-04-11) ===

cms/admin/forms.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -825,6 +825,13 @@ def _get_tree_options_for_parent(self, parent_node, position):
825825

826826
class MovePageForm(PageTreeForm):
827827

828+
def clean(self):
829+
cleaned_data = super(MovePageForm, self).clean()
830+
831+
if self.page.is_home and cleaned_data.get('target'):
832+
self.add_error('target', force_text(_('You can\'t move the home page inside another page')))
833+
return cleaned_data
834+
828835
def get_tree_options(self):
829836
options = super(MovePageForm, self).get_tree_options()
830837
target_node, target_node_position = options

cms/tests/test_page_admin.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1144,6 +1144,24 @@ def test_move_page(self):
11441144
page3 = Page.objects.get(pk=page3.pk)
11451145
self.assertEqual(page3.get_path(), page_data2['slug'] + "/" + page_data3['slug'])
11461146

1147+
def test_user_cant_nest_home_page(self):
1148+
"""
1149+
Users should not be able to move the home-page
1150+
inside another node of the tree.
1151+
"""
1152+
homepage = create_page("home", "nav_playground.html", "en", published=True)
1153+
homepage.set_as_homepage()
1154+
home_sibling_1 = create_page("root-1", "nav_playground.html", "en", published=True)
1155+
1156+
payload = {'id': homepage.pk, 'position': 0, 'target': home_sibling_1}
1157+
1158+
with self.login_user_context(self.get_superuser()):
1159+
endpoint = self.get_admin_url(Page, 'move_page', homepage.pk)
1160+
response = self.client.post(endpoint, payload)
1161+
1162+
self.assertEqual(response.status_code, 200)
1163+
self.assertEqual(response.json().get('status', 400), 400)
1164+
11471165
def test_move_home_page(self):
11481166
"""
11491167
Users should be able to move the home-page

0 commit comments

Comments
 (0)
0