Have wagtailforms register its urls / menu item via hooks, so that wagtailadmin doesn't fail if wagtailforms is absent from INSTALLED_APPS

This commit is contained in:
Matt Westcott 2014-04-29 12:10:16 +01:00
parent 71e45dee23
commit 5293a6942f
2 changed files with 24 additions and 6 deletions

View file

@ -8,7 +8,6 @@ from wagtail.wagtailadmin.menu import MenuItem
from wagtail.wagtailcore.models import get_navigation_menu_items, UserPagePermissionsProxy
from wagtail.wagtailcore.util import camelcase_to_underscore
from wagtail.wagtailforms.models import get_form_types
register = template.Library()
@ -47,11 +46,6 @@ def main_nav(context):
request = context['request']
if get_form_types(): # show this only if forms actually exist
menu_items.append(
MenuItem(_('Forms'), urlresolvers.reverse('wagtailforms_index'), classnames='icon icon-grip', order=700)
)
for fn in hooks.get_hooks('construct_main_menu'):
fn(request, menu_items)

View file

@ -0,0 +1,24 @@
from django.core import urlresolvers
from django.conf.urls import include, url
from django.utils.translation import ugettext_lazy as _
from wagtail.wagtailadmin import hooks
from wagtail.wagtailadmin.menu import MenuItem
from wagtail.wagtailforms import urls
from wagtail.wagtailforms.models import get_form_types
def register_admin_urls():
return [
url(r'^forms/', include(urls)),
]
hooks.register('register_admin_urls', register_admin_urls)
def construct_main_menu(request, menu_items):
if get_form_types(): # show this only if forms actually exist.
# TODO: Limit this to only show the menu item if the user has permission to access at least one form page
menu_items.append(
MenuItem(_('Forms'), urlresolvers.reverse('wagtailforms_index'), classnames='icon icon-grip', order=700)
)
hooks.register('construct_main_menu', construct_main_menu)