Added ViewSetRegistry

This commit is contained in:
Karl Hobley 2017-01-24 16:29:49 +00:00 committed by Matt Westcott
parent f97536f14d
commit 2226385f7c
3 changed files with 34 additions and 18 deletions

View file

@ -5,16 +5,12 @@ from wagtail.wagtailadmin.urls import pages as wagtailadmin_pages_urls
from wagtail.wagtailadmin.urls import collections as wagtailadmin_collections_urls
from wagtail.wagtailadmin.urls import password_reset as wagtailadmin_password_reset_urls
from wagtail.wagtailadmin.views import account, chooser, home, pages, tags, userbar
from wagtail.wagtailadmin.viewsets import register_viewsets
from wagtail.wagtailadmin.api import urls as api_urls
from wagtail.wagtailcore import hooks
from wagtail.utils.urlpatterns import decorate_urlpatterns
from wagtail.wagtailadmin.decorators import require_admin_access
register_viewsets()
urlpatterns = [
url(r'^$', home.home, name='wagtailadmin_home'),

View file

@ -3,19 +3,32 @@ from django.conf.urls import url, include
from wagtail.wagtailcore import hooks
def register_viewsets():
for fn in hooks.get_hooks('register_admin_viewset'):
viewset = fn()
class ViewSetRegistry(object):
def __init__(self):
self.viewsets = []
if viewset:
urlpatterns = viewset.get_urlpatterns()
def populate(self):
for fn in hooks.get_hooks('register_admin_viewset'):
viewset = fn()
self.register(viewset)
if urlpatterns:
@hooks.register('register_admin_urls')
def register_admin_urls():
return [
url(
r'^{}/'.format(viewset.name),
include(urlpatterns, app_name=viewset.name, namespace=viewset.name)
),
]
def register(self, viewset_cls):
self.viewsets.append(viewset_cls)
return viewset_cls
def get_urlpatterns(self):
urlpatterns = []
for viewset in self.viewsets:
vs_urlpatterns = viewset.get_urlpatterns()
if vs_urlpatterns:
urlpatterns.append(url(
r'^{}/'.format(viewset.name),
include(vs_urlpatterns, namespace=viewset.name)
))
return urlpatterns
viewsets = ViewSetRegistry()

View file

@ -8,6 +8,7 @@ from wagtail.wagtailadmin.menu import MenuItem, SubmenuMenuItem, settings_menu
from wagtail.wagtailadmin.navigation import get_explorable_root_page
from wagtail.wagtailadmin.search import SearchArea
from wagtail.wagtailadmin.utils import user_has_any_page_permission
from wagtail.wagtailadmin.viewsets import viewsets
from wagtail.wagtailadmin.widgets import Button, ButtonWithDropdownFromHook, PageListingButton
from wagtail.wagtailcore import hooks
from wagtail.wagtailcore.permissions import collection_permission_policy
@ -170,3 +171,9 @@ def page_listing_more_buttons(page, page_perms, is_parent=False):
attrs={'title': _("View revision history for '{title}'").format(title=page.get_admin_display_title())},
priority=50
)
@hooks.register('register_admin_urls')
def register_viewsets_urls():
viewsets.populate()
return viewsets.get_urlpatterns()