mirror of
https://github.com/Hopiu/wagtail.git
synced 2026-05-14 02:03:11 +00:00
Added ViewSetRegistry
This commit is contained in:
parent
f97536f14d
commit
2226385f7c
3 changed files with 34 additions and 18 deletions
|
|
@ -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'),
|
||||
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
|
|
@ -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()
|
||||
|
|
|
|||
Loading…
Reference in a new issue