Skip to content

Commit

Permalink
Fall back to class name when app name is None
Browse files Browse the repository at this point in the history
  • Loading branch information
halitcelik committed Nov 2, 2024
1 parent e8d1abf commit 037c480
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 7 deletions.
3 changes: 1 addition & 2 deletions cms/apphook_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,8 @@ def get_apphooks(self):

for app_name in self.apps:
app = self.apps[app_name]

if app.get_urls():
hooks.append((app_name, app.name))
hooks.append((app_name, app.name or app_name))

# Unfortunately, we lose the ordering since we now have a list of
# tuples. Let's reorder by app_name:
Expand Down
27 changes: 22 additions & 5 deletions cms/tests/test_apphooks.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,7 @@
from cms.api import create_page, create_page_content
from cms.app_base import CMSApp
from cms.apphook_pool import apphook_pool
from cms.appresolver import (
applications_page_check,
clear_app_resolvers,
get_app_patterns,
)
from cms.appresolver import applications_page_check, clear_app_resolvers, get_app_patterns
from cms.middleware.page import get_page
from cms.models import PageContent
from cms.test_utils.project.placeholderapp.models import Example1
Expand Down Expand Up @@ -332,6 +328,27 @@ def test_apphooks_with_excluded_permissions(self):
self.assertEqual(not_excluded_response.status_code, 302)
self.apphook_clear()

@override_settings(CMS_APPHOOKS=[f'{APP_MODULE}.{APP_NAME}'])
def test_apphook_without_name_defaults_to_class_name(self):
"""
Test that an apphook without a name defaults to the class name.
"""
@apphook_pool.register
class AppWithoutName(CMSApp):
def get_urls(self, page=None, language=None, **kwargs):
return ["sampleapp.urls"]

@apphook_pool.register
class AppWithName(CMSApp):
name = "Custom name"
def get_urls(self, page=None, language=None, **kwargs):
return ["sampleapp.urls"]

hooks = apphook_pool.get_apphooks()
hook_names = dict(hooks)
self.assertEqual(hook_names.get('AppWithoutName'), 'AppWithoutName')
self.assertEqual(hook_names.get('AppWithName'), 'Custom name')

@override_settings(ROOT_URLCONF='cms.test_utils.project.urls_3')
def test_get_page_for_apphook_on_preview_or_edit(self):
if get_user_model().USERNAME_FIELD == 'email':
Expand Down

0 comments on commit 037c480

Please sign in to comment.