diff --git a/menus/menu_pool.py b/menus/menu_pool.py index 37f9bf85c0c..e83d184ee2b 100644 --- a/menus/menu_pool.py +++ b/menus/menu_pool.py @@ -3,6 +3,7 @@ from django.conf import settings from django.contrib.sites.models import Site from django.core.cache import cache +from django.core.urlresolvers import NoReverseMatch from django.utils.translation import get_language from menus.exceptions import NamespaceAllreadyRegistered from menus.models import CacheKey @@ -131,7 +132,12 @@ def _build_nodes(self, request, site_id): final_nodes = [] for menu_class_name in self.menus: - nodes = self.menus[menu_class_name].get_nodes(request) + try: + nodes = self.menus[menu_class_name].get_nodes(request) + except NoReverseMatch: + # Apps might raise NoReverseMatch if an apphook does not yet + # exist, skip them instead of crashing + pass # nodes is a list of navigation nodes (page tree in cms + others) final_nodes += _build_nodes_inner_for_one_menu(nodes, menu_class_name) cache.set(key, final_nodes, settings.CMS_CACHE_DURATIONS['menus'])