From 5293a6942feb82063900a128515cb359721f3273 Mon Sep 17 00:00:00 2001 From: Matt Westcott Date: Tue, 29 Apr 2014 12:10:16 +0100 Subject: [PATCH] Have wagtailforms register its urls / menu item via hooks, so that wagtailadmin doesn't fail if wagtailforms is absent from INSTALLED_APPS --- .../templatetags/wagtailadmin_tags.py | 6 ----- wagtail/wagtailforms/wagtail_hooks.py | 24 +++++++++++++++++++ 2 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 wagtail/wagtailforms/wagtail_hooks.py diff --git a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py index cbf1fb3ef..311163ca3 100644 --- a/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py +++ b/wagtail/wagtailadmin/templatetags/wagtailadmin_tags.py @@ -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) diff --git a/wagtail/wagtailforms/wagtail_hooks.py b/wagtail/wagtailforms/wagtail_hooks.py new file mode 100644 index 000000000..4a4bd1037 --- /dev/null +++ b/wagtail/wagtailforms/wagtail_hooks.py @@ -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)