8000 Fixed #6585 -- Added missing clear cache for menu when page is create… · django-cms/django-cms@41a8404 · GitHub
[go: up one dir, main page]

Skip to content

Commit 41a8404

Browse files
authored
Fixed #6585 -- Added missing clear cache for menu when page is created (#6584)
1 parent a6b56a8 commit 41a8404

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

cms/admin/forms.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -294,6 +294,8 @@ def save(self, *args, **kwargs):
294294
# its the first page. publish it right away
295295
new_page.publish(translation.language)
296296
new_page.set_as_homepage(self._user)
297+
298+
new_page.clear_cache(menu=True)
297299
return new_page
298300

299301

cms/tests/test_menu.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,12 @@
1717

1818
from cms.api import create_page, create_title
1919
from cms.cms_menus import get_visible_nodes
20-
from cms.models import Page, ACCESS_PAGE_AND_DESCENDANTS
20+
from cms.models import Page, ACCESS_PAGE_AND_DESCENDANTS, Title
2121
from cms.models.permissionmodels import GlobalPagePermission, PagePermission
2222
from cms.test_utils.project.sampleapp.cms_menus import SampleAppMenu, StaticMenu, StaticMenu2
2323
from cms.test_utils.fixtures.menus import (MenusFixture, SubMenusFixture,
2424
SoftrootFixture, ExtendedMenusFixture)
25-
from cms.test_utils.testcases import CMSTestCase
25+
from cms.test_utils.testcases import CMSTestCase, URL_CMS_PAGE_ADD, URL_CMS_PAGE
2626
from cms.test_utils.util.context_managers import apphooks, LanguageOverride
2727
from cms.test_utils.util.mock import AttributeObject
2828
from cms.utils import get_current_site
@@ -297,6 +297,35 @@ def test_basic_cms_menu(self):
297297
[page.get_absolute_url() for page in pages],
298298
)
299299

300+
def test_show_new_draft_page_in_menu(self):
301+
"""
302+
Test checks if the menu cache is cleaned after create a new draft page.
303+
"""
304+
with self.login_user_context(self.get_superuser()):
305+
page_data_1 = self.get_new_page_data()
306+
response = self.client.post(URL_CMS_PAGE_ADD, page_data_1)
307+
self.assertRedirects(response, URL_CMS_PAGE)
308+
309+
request = self.get_request('/')
310+
renderer = menu_pool.get_renderer(request)
311+
renderer.draft_mode_active = True
312+
renderer.get_nodes()
313+
self.assertEqual(CacheKey.objects.count(), 1)
314+
315+
with self.login_user_context(self.get_superuser()):
316+
page_data_2 = self.get_new_page_data()
317+
self.assertNotEqual(page_data_1['slug'], page_data_2['slug'])
318+
response = self.client.post(URL_CMS_PAGE_ADD, page_data_2)
319+
self.assertRedirects(response, URL_CMS_PAGE)
320+
page = Title.objects.drafts().get(slug=page_data_2['slug']).page
321+
322+
request = self.get_request('/')
323+
renderer = menu_pool.get_renderer(request)
324+
renderer.draft_mode_active = True
325+
nodes = renderer.get_nodes()
326+
self.assertEqual(CacheKey.objects.count(), 1)
327+
self.assertEqual(page.get_title(), nodes[-1].title)
328+
300329
def test_cms_menu_public_with_multiple_languages(self):
301330
for page in Page.objects.drafts():
302331
create_title(

0 commit comments

Comments
 (0)
0